From c0b118271258cae30a9eaff517e91c1d8c96231e Mon Sep 17 00:00:00 2001 From: "therealmogminer@gmail.com" Date: Mon, 28 Mar 2016 22:58:16 +0200 Subject: [PATCH] Final bgfx fixups for release --- bgfx/chains/default.json | 4 +- bgfx/chains/hlsl.json | 62 ++++----- bgfx/chains/unfiltered.json | 4 +- bgfx/effects/default/LICENSE | 27 ++++ bgfx/effects/default/README.md | 5 + bgfx/effects/{ => default}/blit.json | 0 bgfx/effects/hlsl/LICENSE | 27 ++++ bgfx/effects/hlsl/README.md | 5 + bgfx/effects/hlsl/blit.json | 121 ++++++++++++++++++ bgfx/effects/{ => hlsl}/color.json | 0 bgfx/effects/{ => hlsl}/deconverge.json | 0 bgfx/effects/{ => hlsl}/defocus.json | 0 bgfx/effects/{ => hlsl}/distortion.json | 0 bgfx/effects/{ => hlsl}/ntsc_decode.json | 0 bgfx/effects/{ => hlsl}/ntsc_encode.json | 0 bgfx/effects/{ => hlsl}/phosphor.json | 0 bgfx/effects/{ => hlsl}/post.json | 11 +- bgfx/effects/{ => hlsl}/prescale.json | 0 bgfx/effects/unfiltered/LICENSE | 27 ++++ bgfx/effects/unfiltered/README.md | 5 + bgfx/effects/unfiltered/blit.json | 121 ++++++++++++++++++ bgfx/shaders/dx11/fs_blit.bin | Bin 42904 -> 42904 bytes bgfx/shaders/dx11/fs_color.bin | Bin 45305 -> 45305 bytes bgfx/shaders/dx11/fs_deconverge.bin | Bin 43108 -> 43108 bytes bgfx/shaders/dx11/fs_defocus.bin | Bin 49898 -> 49898 bytes bgfx/shaders/dx11/fs_distortion.bin | Bin 60482 -> 60482 bytes bgfx/shaders/dx11/fs_gui.bin | Bin 42904 -> 42904 bytes bgfx/shaders/dx11/fs_ntsc_decode.bin | Bin 60967 -> 60967 bytes bgfx/shaders/dx11/fs_ntsc_encode.bin | Bin 50379 -> 50379 bytes bgfx/shaders/dx11/fs_phosphor.bin | Bin 45190 -> 45190 bytes bgfx/shaders/dx11/fs_post.bin | Bin 58147 -> 57706 bytes bgfx/shaders/dx11/fs_prescale.bin | Bin 45438 -> 45438 bytes bgfx/shaders/dx11/fs_screen.bin | Bin 42904 -> 42904 bytes bgfx/shaders/dx11/vs_blit.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_color.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_deconverge.bin | Bin 45836 -> 45836 bytes bgfx/shaders/dx11/vs_defocus.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_distortion.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_gui.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_ntsc_decode.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_ntsc_encode.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_phosphor.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_post.bin | Bin 43264 -> 43223 bytes bgfx/shaders/dx11/vs_prescale.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx11/vs_screen.bin | Bin 43083 -> 43083 bytes bgfx/shaders/dx9/fs_post.bin | Bin 5228 -> 4835 bytes bgfx/shaders/dx9/vs_post.bin | Bin 1171 -> 1142 bytes bgfx/shaders/gles/fs_post.bin | Bin 4212 -> 3805 bytes bgfx/shaders/gles/vs_post.bin | Bin 750 -> 629 bytes bgfx/shaders/glsl/fs_post.bin | Bin 4012 -> 3603 bytes bgfx/shaders/glsl/vs_post.bin | Bin 684 -> 569 bytes bgfx/shaders/metal/fs_post.bin | Bin 4823 -> 4384 bytes bgfx/shaders/metal/vs_post.bin | Bin 1048 -> 925 bytes src/osd/modules/lib/osdobj_common.cpp | 2 +- .../modules/render/bgfx/shaders/fs_post.sc | 118 +++++++++-------- .../modules/render/bgfx/shaders/vs_post.sc | 8 +- 56 files changed, 446 insertions(+), 101 deletions(-) create mode 100644 bgfx/effects/default/LICENSE create mode 100644 bgfx/effects/default/README.md rename bgfx/effects/{ => default}/blit.json (100%) create mode 100644 bgfx/effects/hlsl/LICENSE create mode 100644 bgfx/effects/hlsl/README.md create mode 100644 bgfx/effects/hlsl/blit.json rename bgfx/effects/{ => hlsl}/color.json (100%) rename bgfx/effects/{ => hlsl}/deconverge.json (100%) rename bgfx/effects/{ => hlsl}/defocus.json (100%) rename bgfx/effects/{ => hlsl}/distortion.json (100%) rename bgfx/effects/{ => hlsl}/ntsc_decode.json (100%) rename bgfx/effects/{ => hlsl}/ntsc_encode.json (100%) rename bgfx/effects/{ => hlsl}/phosphor.json (100%) rename bgfx/effects/{ => hlsl}/post.json (83%) rename bgfx/effects/{ => hlsl}/prescale.json (100%) create mode 100644 bgfx/effects/unfiltered/LICENSE create mode 100644 bgfx/effects/unfiltered/README.md create mode 100644 bgfx/effects/unfiltered/blit.json diff --git a/bgfx/chains/default.json b/bgfx/chains/default.json index 9888b590727..1142275e528 100644 --- a/bgfx/chains/default.json +++ b/bgfx/chains/default.json @@ -7,14 +7,14 @@ } ], "passes": [ - { "effect": "blit", + { "effect": "default\blit", "name": "Copy To Unstretched Texture", "input": [ { "sampler": "s_tex", "texture": "screen" } ], "output": "temp" }, - { "effect": "blit", + { "effect": "default\blit", "name": "Final Upscale", "input": [ { "sampler": "s_tex", "target": "temp" } diff --git a/bgfx/chains/hlsl.json b/bgfx/chains/hlsl.json index 17757bb8c38..3353f92018a 100644 --- a/bgfx/chains/hlsl.json +++ b/bgfx/chains/hlsl.json @@ -88,27 +88,27 @@ { "type": "color", "name": "phosphor", "text": "Phosphor Persistence, ", "default": [ 55, 55, 55 ], "max": [ 100, 100, 100 ], "min": [ 0, 0, 0 ], "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_alpha", "text": "Scanline Amount", "default": 0, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_scale", "text": "Overall Scanline Scale", "default": 100, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_bright_scale", "text": "Scanline Brightness Scale", "default": 200, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_bright_offset", "text": "Scanline Brightness Offset", "default": 0, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_jitter_amount", "text": "Scanline Jitter Amount", "default": 0, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_height", "text": "Individual Scanline Scale", "default": 100, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "scanline_variation", "text": "Scanline Variation", "default": 100, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "shadow_alpha", "text": "Shadow Mask Amount", "default": 0, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "vec2", "name": "shadow_uv_size", "text": "Shadow Mask UV Size ", "default": [ 250, 333 ], "max": [ 1000, 1000 ], "min": [ 0, 0 ], "step": 1, "scale": 0.001, "format": "%1.4f", "screen": "crt" }, - { "type": "vec2", "name": "shadow_uv_offset", "text": "Shadow Mask UV Offset ", "default": [ 0, 0 ], "max": [ 1000, 1000 ], "min": [ 0, 0 ], "step": 1, "scale": 0.001, "format": "%1.4f", "screen": "crt" }, - { "type": "intenum", "name": "shadow_tile_mode", "text": "Shadow Mask Tile Mode", "default": 0, "max": 1, "min": 0, "step": 1, "scale": 1.0, "format": "%s", "screen": "crt", "strings": [ "Screen", "Source" ] }, - { "type": "float", "name": "humbar_alpha", "text": "Hum Bar Amount", "default": 5, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "humbar_hertz_rate", "text": "Hum Bar Frequency", "default": 100, "max": 10000, "min": 0, "step": 1, "scale": 0.00001, "format": "%1.7f", "screen": "crt" }, - { "type": "color", "name": "floor", "text": "Signal Floor, ", "default": [ 5, 5, 5 ], "max": [ 100, 100, 100 ], "min": [ 0, 0, 0 ], "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "color", "name": "power", "text": "Signal Exponent, ", "default": [ 100, 100, 100 ], "max": [ 400, 400, 400 ], "min": [ 0, 0, 0 ], "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_alpha", "text": "Scanline Amount", "default": 40, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_scale", "text": "Overall Scanline Scale", "default": 100, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_bright_scale", "text": "Scanline Brightness Scale", "default": 200, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_bright_offset", "text": "Scanline Brightness Offset", "default": 0, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_jitter_amount", "text": "Scanline Jitter Amount", "default": 0, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_height", "text": "Individual Scanline Scale", "default": 100, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_variation", "text": "Scanline Variation", "default": 100, "max": 400, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "shadow_alpha", "text": "Shadow Mask Amount", "default": 20, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "vec2", "name": "shadow_uv_count", "text": "Shadow Mask Pixel Count ", "default": [ 12, 12 ], "max": [ 128, 128 ], "min": [ 1, 1 ], "step": 1, "scale": 1.0, "format": "%3f", "screen": "crt" }, + { "type": "vec2", "name": "shadow_uv_size", "text": "Shadow Mask UV Size ", "default": [ 500, 500 ], "max": [ 1000, 1000 ], "min": [ 0, 0 ], "step": 1, "scale": 0.001, "format": "%1.4f", "screen": "crt" }, + { "type": "vec2", "name": "shadow_uv_offset", "text": "Shadow Mask UV Offset ", "default": [ 0, 0 ], "max": [ 1000, 1000 ], "min": [ 0, 0 ], "step": 1, "scale": 0.001, "format": "%1.4f", "screen": "crt" }, + { "type": "float", "name": "humbar_alpha", "text": "Hum Bar Amount", "default": 0, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "humbar_hertz_rate", "text": "Hum Bar Frequency", "default": 100, "max": 10000, "min": 0, "step": 1, "scale": 0.00001, "format": "%1.7f", "screen": "crt" }, + { "type": "color", "name": "floor", "text": "Signal Floor, ", "default": [ 5, 5, 5 ], "max": [ 100, 100, 100 ], "min": [ 0, 0, 0 ], "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "color", "name": "power", "text": "Signal Exponent, ", "default": [ 80, 80, 80 ], "max": [ 400, 400, 400 ], "min": [ 0, 0, 0 ], "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "curvature", "text": "Screen Curvature Amount", "default": 25, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "curvature", "text": "Screen Curvature Amount", "default": 20, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, { "type": "float", "name": "round_corner", "text": "Rounded Corner Amount", "default": 15, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, { "type": "float", "name": "smooth_border", "text": "Smooth Border Amount", "default": 5, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, { "type": "float", "name": "vignetting", "text": "Vignetting Amount", "default": 20, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, - { "type": "float", "name": "reflection", "text": "Reflection Amount", "default": 25, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" } + { "type": "float", "name": "reflection", "text": "Reflection Amount", "default": 15, "max": 200, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" } ], // parameters (optional): A list of procedurally-generated parameters that can be bound to entry uniforms. @@ -172,7 +172,7 @@ { // effect (required): The name of the effect JSON file to load for this pass. // value: Any valid JSON filename included in your shader chain, without the extension. - "effect": "ntsc_encode", + "effect": "hlsl/ntsc_encode", // name (required): A verbal name for the effect. It is only used internally, but is required nonetheless. // value: Any valid ASCII string. @@ -254,7 +254,7 @@ // value: Any valid ASCII string that names a target. "output": "guest" }, - { "effect": "ntsc_decode", + { "effect": "hlsl/ntsc_decode", "name": "NTSC Decode", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -278,7 +278,7 @@ ], "output": "guest" }, - { "effect": "blit", + { "effect": "hlsl/blit", "name": "NTSC Skip", "disablewhen": [ { "type": "slider", "condition": "notequal", "combine": "and", "name": "adjustments", "value": 0 }, @@ -289,7 +289,7 @@ ], "output": "guest" }, - { "effect": "color", + { "effect": "hlsl/color", "name": "Color Convolution", "disablewhen": [ { "type": "slider", "condition": "equal", "name": "adjustments", "value": 0 } @@ -307,14 +307,14 @@ ], "output": "guest" }, - { "effect": "prescale", + { "effect": "hlsl/prescale", "name": "Prescale", "input": [ { "sampler": "s_tex", "target": "guest" } ], "output": "internal" }, - { "effect": "deconverge", + { "effect": "hlsl/deconverge", "name": "Deconvergence", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -338,7 +338,7 @@ ], "output": "internal" }, - { "effect": "defocus", + { "effect": "hlsl/defocus", "name": "Defocus Pass 1", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -352,7 +352,7 @@ ], "output": "internal" }, - { "effect": "defocus", + { "effect": "hlsl/defocus", "name": "Defocus Pass 2", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -366,7 +366,7 @@ ], "output": "internal" }, - { "effect": "phosphor", + { "effect": "hlsl/phosphor", "name": "Phosphor Decay", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -382,7 +382,7 @@ ], "output": "internal" }, - { "effect": "phosphor", + { "effect": "hlsl/phosphor", "name": "Phosphor Store", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -398,7 +398,7 @@ ], "output": "previous" }, - { "effect": "post", + { "effect": "hlsl/post", "name": "Non-Bloom Post Pass", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -416,9 +416,9 @@ { "uniform": "u_scanline_height", "slider": "scanline_height" }, { "uniform": "u_scanline_variation", "slider": "scanline_variation" }, { "uniform": "u_shadow_alpha", "slider": "shadow_alpha" }, + { "uniform": "u_shadow_count", "slider": "shadow_uv_count" }, { "uniform": "u_shadow_uv", "slider": "shadow_uv_size" }, { "uniform": "u_shadow_uv_offset", "slider": "shadow_uv_offset" }, - { "uniform": "u_shadow_tile_mode", "slider": "shadow_tile_mode" }, { "uniform": "u_humbar_alpha", "slider": "humbar_alpha" }, { "uniform": "u_humbar_hertz_rate", "slider": "humbar_hertz_rate" }, { "uniform": "u_floor", "slider": "floor" }, @@ -433,7 +433,7 @@ ], "output": "internal" }, - { "effect": "distortion", + { "effect": "hlsl/distortion", "name": "Distortion Pass", "disablewhen": [ { "type": "slider", "condition": "equal", "combine": "or", "name": "adjustments", "value": 0 }, @@ -455,7 +455,7 @@ ], "output": "internal" }, - { "effect": "blit", + { "effect": "hlsl/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "internal" } diff --git a/bgfx/chains/unfiltered.json b/bgfx/chains/unfiltered.json index ac9556a1a41..19d74cd5eec 100644 --- a/bgfx/chains/unfiltered.json +++ b/bgfx/chains/unfiltered.json @@ -7,14 +7,14 @@ } ], "passes": [ - { "effect": "blit", + { "effect": "unfiltered\blit", "name": "Copy To Unstretched Texture", "input": [ { "sampler": "s_tex", "texture": "screen" } ], "output": "temp" }, - { "effect": "blit", + { "effect": "unfiltered\blit", "name": "Final Upscale", "input": [ { "sampler": "s_tex", "target": "temp" } diff --git a/bgfx/effects/default/LICENSE b/bgfx/effects/default/LICENSE new file mode 100644 index 00000000000..e1a4f1f53d6 --- /dev/null +++ b/bgfx/effects/default/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2016, Ryan Holtz and MAME Development Team +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of bsd3 nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bgfx/effects/default/README.md b/bgfx/effects/default/README.md new file mode 100644 index 00000000000..72aad88f861 --- /dev/null +++ b/bgfx/effects/default/README.md @@ -0,0 +1,5 @@ +# **BGFX shader effects** # + +Cointains definitions for BGFX shader effects + +Licensed under [The BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause) by Ryan Holtz and MAME Development Team diff --git a/bgfx/effects/blit.json b/bgfx/effects/default/blit.json similarity index 100% rename from bgfx/effects/blit.json rename to bgfx/effects/default/blit.json diff --git a/bgfx/effects/hlsl/LICENSE b/bgfx/effects/hlsl/LICENSE new file mode 100644 index 00000000000..e1a4f1f53d6 --- /dev/null +++ b/bgfx/effects/hlsl/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2016, Ryan Holtz and MAME Development Team +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of bsd3 nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bgfx/effects/hlsl/README.md b/bgfx/effects/hlsl/README.md new file mode 100644 index 00000000000..72aad88f861 --- /dev/null +++ b/bgfx/effects/hlsl/README.md @@ -0,0 +1,5 @@ +# **BGFX shader effects** # + +Cointains definitions for BGFX shader effects + +Licensed under [The BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause) by Ryan Holtz and MAME Development Team diff --git a/bgfx/effects/hlsl/blit.json b/bgfx/effects/hlsl/blit.json new file mode 100644 index 00000000000..bbc9fd295d4 --- /dev/null +++ b/bgfx/effects/hlsl/blit.json @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// blit.json: A simple texture-to-target copy. +// +//============================================================ +{ + // blend (required): The blend state for this effect. + "blend": { + // equation (optional): What equation to perform on the source and destination blend values. + // values: "add", "sub", "revSub", "min", "max" + // default: "add" + // + // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub" + "equation": "add", + + // blend function parameters (optional): What factors to use in the blend function when calculating the final pixel. + // values: "0", "1", "srcColor", "1-srcColor", "dstColor", "1-dstColor", "srcAlpha", "1-srcAlpha", "dstAlpha", "1-dstAlpha" + // defaults (srcColor, srcAlpha): "1" + // defaults (dstColor, dstAlpha): "0" + // + // "zero", "one", "invSrcColor", "invDstColor", "invSrcAlpha", and "invDstAlpha" are provided as aliases for "0", "1", "1-srcColor", "1-dstColor", "1-srcAlpha", and "1-dstAlpha" + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + + // 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 name of a shader file to use, minus the extension. + "vertex": "vs_blit", + + // pixel/fragment (required): The pixel or fragment shader to use when drawing. + // value: A string containing the name of a shader file to use, minus the extension. + "fragment": "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/color.json b/bgfx/effects/hlsl/color.json similarity index 100% rename from bgfx/effects/color.json rename to bgfx/effects/hlsl/color.json diff --git a/bgfx/effects/deconverge.json b/bgfx/effects/hlsl/deconverge.json similarity index 100% rename from bgfx/effects/deconverge.json rename to bgfx/effects/hlsl/deconverge.json diff --git a/bgfx/effects/defocus.json b/bgfx/effects/hlsl/defocus.json similarity index 100% rename from bgfx/effects/defocus.json rename to bgfx/effects/hlsl/defocus.json diff --git a/bgfx/effects/distortion.json b/bgfx/effects/hlsl/distortion.json similarity index 100% rename from bgfx/effects/distortion.json rename to bgfx/effects/hlsl/distortion.json diff --git a/bgfx/effects/ntsc_decode.json b/bgfx/effects/hlsl/ntsc_decode.json similarity index 100% rename from bgfx/effects/ntsc_decode.json rename to bgfx/effects/hlsl/ntsc_decode.json diff --git a/bgfx/effects/ntsc_encode.json b/bgfx/effects/hlsl/ntsc_encode.json similarity index 100% rename from bgfx/effects/ntsc_encode.json rename to bgfx/effects/hlsl/ntsc_encode.json diff --git a/bgfx/effects/phosphor.json b/bgfx/effects/hlsl/phosphor.json similarity index 100% rename from bgfx/effects/phosphor.json rename to bgfx/effects/hlsl/phosphor.json diff --git a/bgfx/effects/post.json b/bgfx/effects/hlsl/post.json similarity index 83% rename from bgfx/effects/post.json rename to bgfx/effects/hlsl/post.json index 525bbfc39b8..c4a86da84e5 100644 --- a/bgfx/effects/post.json +++ b/bgfx/effects/hlsl/post.json @@ -28,11 +28,8 @@ { "name": "s_tex", "type": "int", "values": [ 0.0 ] }, { "name": "s_shadow", "type": "int", "values": [ 1.0 ] }, { "name": "u_swap_xy", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, - { "name": "u_screen_dims", "type": "vec4", "values": [ 1336.0, 1002.0, 0.0, 0.0 ] }, { "name": "u_source_dims", "type": "vec4", "values": [ 256.0, 256.0, 0.0, 0.0 ] }, - { "name": "u_shadow_uv_offset", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, - { "name": "u_prepare_bloom", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, - { "name": "u_prepare_vector", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_quad_dims", "type": "vec4", "values": [ 256.0, 256.0, 0.0, 0.0 ] }, { "name": "u_humbar_hertz_rate", "type": "vec4", "values": [ 0.001, 0.0, 0.0, 0.0 ] }, { "name": "u_humbar_alpha", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, { "name": "u_time", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, @@ -46,10 +43,10 @@ { "name": "u_scanline_height", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, { "name": "u_scanline_variation", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, { "name": "u_jitter_amount", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, - { "name": "u_back_color", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, - { "name": "u_shadow_tile_mode", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, { "name": "u_shadow_alpha", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, - { "name": "u_shadow_uv", "type": "vec4", "values": [ 0.25, 0.333, 0.0, 0.0 ] }, + { "name": "u_shadow_count", "type": "vec4", "values": [ 12.0, 12.0, 0.0, 0.0 ] }, + { "name": "u_shadow_uv", "type": "vec4", "values": [ 0.25, 0.25, 0.0, 0.0 ] }, + { "name": "u_shadow_uv_offset", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, { "name": "u_power", "type": "vec4", "values": [ 1.0, 1.0, 1.0, 0.0 ] }, { "name": "u_floor", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] } ] diff --git a/bgfx/effects/prescale.json b/bgfx/effects/hlsl/prescale.json similarity index 100% rename from bgfx/effects/prescale.json rename to bgfx/effects/hlsl/prescale.json diff --git a/bgfx/effects/unfiltered/LICENSE b/bgfx/effects/unfiltered/LICENSE new file mode 100644 index 00000000000..e1a4f1f53d6 --- /dev/null +++ b/bgfx/effects/unfiltered/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2016, Ryan Holtz and MAME Development Team +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of bsd3 nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bgfx/effects/unfiltered/README.md b/bgfx/effects/unfiltered/README.md new file mode 100644 index 00000000000..72aad88f861 --- /dev/null +++ b/bgfx/effects/unfiltered/README.md @@ -0,0 +1,5 @@ +# **BGFX shader effects** # + +Cointains definitions for BGFX shader effects + +Licensed under [The BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause) by Ryan Holtz and MAME Development Team diff --git a/bgfx/effects/unfiltered/blit.json b/bgfx/effects/unfiltered/blit.json new file mode 100644 index 00000000000..bbc9fd295d4 --- /dev/null +++ b/bgfx/effects/unfiltered/blit.json @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// blit.json: A simple texture-to-target copy. +// +//============================================================ +{ + // blend (required): The blend state for this effect. + "blend": { + // equation (optional): What equation to perform on the source and destination blend values. + // values: "add", "sub", "revSub", "min", "max" + // default: "add" + // + // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub" + "equation": "add", + + // blend function parameters (optional): What factors to use in the blend function when calculating the final pixel. + // values: "0", "1", "srcColor", "1-srcColor", "dstColor", "1-dstColor", "srcAlpha", "1-srcAlpha", "dstAlpha", "1-dstAlpha" + // defaults (srcColor, srcAlpha): "1" + // defaults (dstColor, dstAlpha): "0" + // + // "zero", "one", "invSrcColor", "invDstColor", "invSrcAlpha", and "invDstAlpha" are provided as aliases for "0", "1", "1-srcColor", "1-dstColor", "1-srcAlpha", and "1-dstAlpha" + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + + // 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 name of a shader file to use, minus the extension. + "vertex": "vs_blit", + + // pixel/fragment (required): The pixel or fragment shader to use when drawing. + // value: A string containing the name of a shader file to use, minus the extension. + "fragment": "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/shaders/dx11/fs_blit.bin b/bgfx/shaders/dx11/fs_blit.bin index 97c305a440d4480654f22d7f76094dd2c966d56d..98e6afc9871200c65105976444a7239ca1843106 100644 GIT binary patch delta 150 zcmbPno@vH;rU^0v=bCK3y;=3(Kwn9tRp)W((v3Pf+!9T*eugnJFfgoBOo+`6Gj&+- zy`b#GoX^uXZ{YsH%;ucM#K8M_^E&=_wwznOu znN}ad8J_Ilyn*`%GuypXCWbjLHm~D3kdGcpt}W@Ip3 z$IS5YJOe}0VkQO#fz5`@+ZZ>072>etwABms+S7KCk#Vviv;Jn&z&b9$0HBgjANd%> zMHvJb7?_y?CLf8O&ZMw*a%_wgklI`s)8K~3NsGgn7?mbxEY)Z7H{CpQX#zI@JEcs& diff --git a/bgfx/shaders/dx11/fs_deconverge.bin b/bgfx/shaders/dx11/fs_deconverge.bin index 34032932b6b6688742468634e7ed85259617e34d..2c3047ecc38dce60b2e3de3172a63e9b8933b636 100644 GIT binary patch delta 101 zcmaEIf$7NwrU^0v2|1GYOMgZC-mhN7`)$MBi5qn+cqE!<{S0GdU|`^#+H?8GA2HuK jo2+UX_Gp@JuHkv($oA2Fc7RFe<~+Y|fp}Cdc)<<;Bqc2T delta 101 zcmaEIf$7NwrU^0v>JyhPJ#KfCuh6!xfo)0~=SCe19tribuVIV~3=EPDbL14RfAgKk iQC8yN{5XDd4bK}#HZIkAuRU#>^ZdRA;!(Na1v>!kV<-Or diff --git a/bgfx/shaders/dx11/fs_defocus.bin b/bgfx/shaders/dx11/fs_defocus.bin index 2b1552c0cf6b244e08c2989b4a66992dc251db56..0453ced92453c3df9befa1be5071fa2610064c3a 100644 GIT binary patch delta 241 zcmaFW%KWO8d4iq5)4WZoCpst3@Cy@|E|poaa--iIK8fa8Kf@Rq7#Osa{qCjKAHY|dFs47`sg2}=pJe_>?Uc$9(RWEBHL?Jb}Vfz67nyBIe=6X9^+ zcx;&vVA6S!ak3)6!DNBuESt4LlSBj)m>3v7edJ>h7iAD&U|?oSm^?Rgy7mKKkSG^} zgeWgi6lf3=LIpyOA0#*V;=0hu2CPP#pJlOl;c@BKGA5=jmC1VBr8ZC59>xs-98pgq delta 241 zcmaFW%KWO8d4iq5$NlBq-y@WQ=9Zc~d}g{|Zlm8EJ_)t5uVIV~3=EzOYwX^)3p)4j zNWT5sbJ>;6O#DBX+3uw>G0b@}NmxqAcrzoz#-j`jhA|8bwYPve1U4(O?qb~hOoYRM zqm$LyYfsxn#>tBO29pJrvuxH1O%f4wU}9kS^pTH2T$Dk8fq|LHVe;I}>DmESAW<#` z2~l34D9|7#gbIWlKS*x!#dV>R4OopfKg(kA!sF7dWlT)6Qj_(zOKqOAJ&YRw2lY*l diff --git a/bgfx/shaders/dx11/fs_distortion.bin b/bgfx/shaders/dx11/fs_distortion.bin index 19a7124084eec977db22f61954ab443adc8a193b..4399b58c49ccafe3c5bebecc2c43da9c65754578 100644 GIT binary patch delta 188 zcmX?fgZa=6<_YHnvL?;mzQ&R>@&4x<)4v>EHFM*=6mf~>SwF)V85kILuFdw9U;p26 zcPX>zt=khOZH|)AVPU_Q%EU0|1@q)y8A&dm7-j~oOH2$w7dLN^ndZw`&e{`T(s_}Q zadIP{{^q)@Tk=c?%qK^6Ndc+NWnEUxf(}d!44*#oF^G#Y2rw`(GdXNN*xML_$I3@x UOpMx-H$Ks4+G4i((USyr03E7JS^xk5 delta 188 zcmX?fgZa=6<_YHnxD>?}=5o)wyv#1K|LfEpZ#Ldb5tmRe`x?f`z`!8(*m|9?zoSdT zAc9uIQb%@{^l#bX&izHObiU4 jKJqb$i!ul>FfcPEZ1xWGb;V=o>@X(A(#`DiCUOD*R}nf5 delta 151 zcmbPno@vH;rU^0vpNd%@E#Ox(o diff --git a/bgfx/shaders/dx11/fs_ntsc_decode.bin b/bgfx/shaders/dx11/fs_ntsc_decode.bin index e42dfd9ab0be75436361e6fb1d9e468ac4dbaa26..bbefb77f9d55ca3b05cfb6fef667c23525189509 100644 GIT binary patch delta 218 zcmZ2}hk5xO<_+A80$c*x>eIE(%YXR6&95ugIDNA;Bafs+)2yFij0_A6%aV7`ydYWb zwn)sc&Uw$?9h>c?{xBO&%w}K^e#pq+@QRUvOO=UX&U+>XM-@hfD-28wirX0(Rs}FI zn66`Hc=4B+A!#ua1B1ZkM1gILo0SzfJlO1NJp)WSHydVbP!TKu%6Q_pm!4at+cd!>NX=Hn7fMjlBCwX&~aj0_A6yWTabG-!D^ zO}=+5HOj)}&t`k6Kg>qXSxgMPkC_=9UNJIosWLIldC$b)sKUr_g@K7daXTY}mjnZY z={jbHU~49Zq{U1O3<8@I1-3D6R#xEfVCy`u>$RtCvth;t6~P3c+^3Ix4C0~;0t^hy wObL@e^-O0u9N0t zss8R2_idXW3;bXAn>1o!BK^gq2HB}L2)}HgWU{9hK)xV z7z}PQFx1`xnj^58k$o5A=Hp@jO+WFETPtW@Ojj%pRF0B-8-3>C;C(260ga z0R{$UrUr(|_1V+p7~(;~TnrMTyg*@~F-!<04Dp+dbC!89$vJGkz2yTV9tUp=V`B83 QY_(ILNyK4u_Ra)u0GkC#y8r+H delta 250 zcmX@z$$Yw#dBS>unHvm0Fo&GJpwfTrBjcvC!W;MV2uP@xeGOw|U|?|bc$#ta;sw7I zk=q=XOT72k{8-=zv(c$^28ILA85uZ(85y`#nHU8AGcY)+Ff#PJGBPM`XJn{2z|64m zCZTR?LJHZ!vCV%&UOjKhhOD|(98p0e%Vm& diff --git a/bgfx/shaders/dx11/fs_phosphor.bin b/bgfx/shaders/dx11/fs_phosphor.bin index cb4067339e1ca11c254a50b771b827ca6726e34b..b4279fc2c3c34eed10b05f6b05c9091776e8366b 100644 GIT binary patch delta 198 zcmZpB$kg_bX@Vbrs9)05+%uC|wNC!Kk;HdxW2`2RMANLFVT=q645bYsE$7T8xOU#1 z)^k9)Vd3U^Jb#$k)594UOvRZdFBFjEcQ#{UFkQ#Y;QEu9A!#wwh7iAD&U|?o4V3-^fJ&h^h^W<02Qb1}mTTFu+ d9-9}1F)>r7!G%q%3W{F;XZ6pGs$7IPjct@gc9Xv@k!SMOo_uPF)MkUFVcY;>SV~F& diff --git a/bgfx/shaders/dx11/fs_post.bin b/bgfx/shaders/dx11/fs_post.bin index 142a5ce62960bd489122b58374bb809eba138eb6..f7de4f9d3d6972a13ed8d8fbd2383417eb1f522b 100644 GIT binary patch delta 7828 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 ZY67(j)3L?c`Q_Q~_{W;wv1~hL{Rvb{(d+;K delta 8983 zcmeHNe{|H{+e0^NJ!=)v;z}WcSZnLnJ-X_iL$}tVYu&SZc5y%Veeaw3 zCRxwffBK)_@aFTqKi<9f-S^)8zWFl$_I%3s{xM}mL(9h0EgK$aDkR@%`|ur+!S?Yz zIYeYp5On8IG`hRJtG9nRhq8n>Fgny3J^Z=Sw%McYgG155$WXL>XWzg;e-4GAl9l9+ zMLS0ZhH|LcVGnmkcK7w}j_>d0#Y#1`ppo&x#*@c)oS$@QH$=qtMFc zP^5EDw0Bp}NDdu8{C;ul6oi?h?K>l#x3zZ;^s%#-!ODStPo!($j`oq>zG!>@Ko{)3 z1;MO@Kw`KIW+1^F9mCKqt=2QzzcVsqLd^m*9RnM%kKKV4Wzl;O-Ekw5Op*{l`D2d*WMm#I4c+-u=9y-d$FQL&(3Z~>*J7@p}-5aa$U zh;!SIn$PzFnYhOBj!$X&^%#$=qouw7*1r**fW8e0JtyDzXYI4{YC2Q-jJ1} zPI?RUN-sl1ykg8MOT)ccWxQ_JVWk)Nyv#*H)~Sbm1!+i)Z=YI_J~!qApJykLNJ(IZ z%OdxM^~89X#+9DvBRO$RjDM%_ydEcUo-lVI+Moa6nnyR}W0v(5)7y^|xL7*ymSdW; z&O_sSOuyD<2frNu?P{aLD`1`Jm*wad%K*5aTW;)|G^J~K40#X(Mt}m7$R%b~Z!Dw3 zfv{l?NrRffN{XG-^^|b8{HeR`iu_hbz-2)5&XW`H0LOGQ`Yx%$0o>3=;6vJ zGov>f1WYpxyu6Iu1Y<8qKbBzEshaTd(Sv$LwT1KvVL_?X{u z+JL3WlWCNbn#o2ALDA`a99kjoljqJf-yR&jM*Cj;Shm;sgHo-ZCWUyIfE z{IyNmc9>~h!F0$ept!E{WuoGU-xh18=5vW&8cJ|`LzP!{_Z~d(v3cjNb z7A+2(J899_i$oW1qKW5<-l_2?k7Mf4&9>V3Rz=BbxkeCp_v|DIvaOq%)opQLA)qmsJ4B~QKo6R(=zy1+j=R_h-giH!7iPV8!( z^r-J|d$puRhf$BSPnW&g9^+F@CljIS@jYtri@z(L5>xfKy?V7Bst(x|6}H;;7p0}n zsnYa!S%WKWT7}z+7T9&ROR;*-xV_5FP(N)e+ESS~xtZXjNq2P^y<9UMm9BX0#V#w0YSsJC z<`-4EdMxHhw1M`~F;#uy+cny%7`-tvd|Q2AG%^Isl}nJiYei7cXWZ(@BA7S*)j(vf zx@CKIWL;!9>d1$7?L^1^-to#QyejlDvkoiJs+#T(>DcSe%X*pZ!B@uaoTM_Lk9+ z!O;g>c|k)6sh=lej&zDD)}=dsF8esHXdup->OOs87E<8NVg1TN91 z*1xN-9aFt)ePkrk9%={I(cpZkM*a$~&)j#>Qjg?? z)MHWG+xdFQr6r9MlhMVVoI`x>#dVC&8X8qbPumR+nNQ8x__jc)_`3^23u=5;H~b72 zpU)(QpXuVOANDkCI)>Vq6uZrFtv21<<_cYWx49DaaBqRSxp!&tF`wo^`WxM!n(D2l=$6eY`9Ct}R>l;2#!BSe2jjw0O zmaC9rb1hKw2Qo|F(i41;%o^pqvSo*#X_ct-q5AeJ9A7wK+vSG`V)*WXGrw8uk4({L ztA@||$+%k7o}nenxL;iNv&rlv6OG|>lDb!qAekFEY3)TE|Lta9}OP@8c|v}ik3 zssHG!^BvICF{)H`{q?>q9RDraOy%lp{f)jsO&taG8&JnJRYE1|n%(ujV|sBtM1|^( z-HrLAXSNGD;Z1a7_5t7#co9)i;J)VyAV6Drd}w;k###SC8Slmn~Nb!{@!`p_{Tz1iAR~%EvTBa9yw=bNjxH z@c;SX25aBx%p5iKM~Q{7X|yPI`K!Jc%m3-`o0JuXPCLJQJ}(1LVGXhC`ibPDgtjT`CH%v*%xD+F~$roENNf}>cZg#%>@KVeGbM2b>T>dJPtmPj-q9N7Sv1E z2l_PlKzh%?xS(Ece#o)xVuTwCWA>RLNFAU9paqFnO(tkTdR%Bhy&8g$^Qr*S%fKwq zf?Vu0EvTPK*^uk!4{m5P6mr23qz<74F#`txgjpA^PwO} zgF*`u7up4o3)1643(^^(1?iH|g2biSMt?!7a_CrGZYV4Yf_kfQ2i|f(;%Z(BT96J3 zEl9^fmq9K_lR^s;Z+n&t>f^#yc=H(NbHi0|fI>m#P!Ob6p#^CWbOi_CARQ7~kob{u zHROVHN@ziPRcJwM4Wh~zI_Mh&z~_!dpam%mdNF80ea^TBG@mzsbgzSPL3%=HK{_L} zAiXQJAZ4Ji6;;C^-vFt^!MH{>vFF;@3LH>MPz6^|DIV*LX@Y!j(K?z<3k25!+fbxK zf?I)gG>g^%m*LpAL}MO~6igRrdKL6ng5Cysn+w;1t|DsTnSDMI4hx1qekzn#eW<) ze`D}ciTg3gc4(}kTQu&ZQH|L&s-C=aVT`{o@p*u+tI*u{{N&{80NSVB_h}6j7a*TQ z+tB#Iaun?}+IwiZ@Nqp_584B0r_e5;pyzkb>JmW}IgCYxUh6$fq97uKGsS@sF8 zV&8Qi{2Jmx)RTWjLtUcZ;)8J;srb+HW2=RHPVhm&wFrgP_M$QJf6FkwU}!P-6~SKV z_kE!wf>E*abD@7P{r}eCUrX~uAx{iEA_|u9?-yJN19;a}qPCu$Z^hN<*)k-gK>g@! zOS)6aQ&q;f)!?mH_n!-@z@$$-d~UN9R_~pgXJsH;*Qhyq5fq8Rk(DTXXrR@648B%UWb}} z{%ZBr^K(?w`8@SB@H^+z)tfug)ZX(!^|q$xDgT8z>ZS8})^YU?w7+;E;OWf5XbJ-u z2uH$mJaPM+H!PKZ!7g|?;XC;v7H-wyi}OQ?SJ?bLIyt1vi7xWKSpRYX2Tt|o#k|7A zJLD;SvMhDxVwq*D-(8%$GGuWaoD;la9vH&uAZa|Dknyh(l?k z;uj&$)%^Pd8w(xdNL(JA%Z|uP&UdlPELx*p|K)-lN5S1g`ClvX*#3#i*KW3&?iB;C zG!l+>_*nw*Qa+yExaX&QC0ZL6TosVNpWq)MYMf1oy3uYyW0_aI_^bWa4z=mmKPz1c hn)i7vT02??S_G{VZ6{h6W^0ADYvT6TEw87;`d?LKeQ5vy diff --git a/bgfx/shaders/dx11/fs_prescale.bin b/bgfx/shaders/dx11/fs_prescale.bin index 48b30509c0b8b2a26977e735a6a1bf9ddd16a073..a179c13e6ec4a50a27bd8f9fbaeceb40992bd97e 100644 GIT binary patch delta 151 zcmezOi0R)WrU_00y4BC5GLzzhxjA?vK0ajFw=qbESE6aw&oD*?28O*X#+h4IE%jKZ z!pG>@n_;|p8t)HgcIPZ62HwZao2LrCwdV|+cHiHm^CBbTc8L022el jr;mIL;-U-!3=GUn0hj+k&_LCY=`<87E(4)Zcu?H;qFufQfoAaZv^V1_oxPfX&`vzOHx-ogK!+SiPBj-b79ScPu*b delta 151 zcmbPno@vH;rU^0vfeD-L{Q3OSx3z}7?ERF>XEy5Oa7(C`eGOw|U|=}>A$9uBzITr8 z+}5wRMRrzf-oX8XncX>yiGlYq^XB#ZZ*4ixEZXn6r|lvmBM&bD>(~X8AJQ5AFeugnJFfc?ZzCE+^>`9+J qpH2yA*sMt29Lw{@ku79Do4-ltW`DnL-gs2b3S(ll+q`AYbZ!9lJ}&G4 delta 108 zcmX?of$8)GrU{Ayug>h>lD(v=koD#%fzKz-MrdH diff --git a/bgfx/shaders/dx11/vs_deconverge.bin b/bgfx/shaders/dx11/vs_deconverge.bin index 43c6c33410e21868c35bfb3d12027719ddc4b71a..62440de3aa77ab069baa3f57ea8e618abcbee9b4 100644 GIT binary patch delta 123 zcmeBq#?yRL#%nr)4BQzZ1N9d*Yma<&F0=_#_%<{S0GdU|f?4W2{3r%kjT)Wt);&=x@@wSs;|fk11Ggv)JMfjCgb`4P#=|om{$HAEb8K@-%J$ D8m%*L delta 123 zcmeBq#?y>%G&;K9}!(?0&f@(&Gr9j%d=jc4v2l6@np(swY&H7-flD$;gM*Z^)rl-fq~)ZYo_1*dCl(o zy7TJ)GnVUZj^%md$TsuB6n~S>&HjEYUQ7WTn?q-OV8o+iRv43#0njW2$W6@5W5~!WNTzf_T1C9+24=Fi)n@C=Fk}*81d+s6~?4g3N#A=auYN281nM- VQh`FcyYxOXGOW?ue05G4Hvk50G)Vve diff --git a/bgfx/shaders/dx11/vs_distortion.bin b/bgfx/shaders/dx11/vs_distortion.bin index 2d5d08866b917db6e65b66357f825e4e508cb339..152756344fb9335cfd2186f3473d66c026bfdaa7 100644 GIT binary patch delta 108 zcmX?of$8)GrU{AyNe0QP+oCjnY-Il*b*?&8Wuu`8k3`d~pJ9v)3=G*3i}t;V-ssV? qog>l6ta8KVSe`eIY??7={7pJH`}=+K#-nmp7!%`^&0FS7=LP_Rk}S*s delta 108 zcmX?of$8)GrU{Ayu|mf$rv7icVVe9X@>#w9-;IVMJQAv9U&9y~7#LNJ5@JKYw`WeQ^z`&p`KWCE8+VlS1 qakm6kuj3cl9Lw{@kuB$vq`yh$W`DnL-gs2b3S(j{+Pr1XbZ!6#V=XcO delta 108 zcmX?of$8)GrU{AyGpuxK0$uIjw6Fz!WMfp?>2K1x+24=Fi%F|=bLfl@jCgd+3S(lNxOvN*>D&Oa12D+| delta 116 zcmX?of$8)GrU{AythP~ksR7fpK4two?JmkMvC&Y3M?$siYZxN~1H+ceLbZG5Yy76J yn!hBe?}WqVSe`eIZ29iJo_pFh`}?tYG3khG4xRCV5s!{pVN8rho43rF&J6%#04^l} diff --git a/bgfx/shaders/dx11/vs_ntsc_encode.bin b/bgfx/shaders/dx11/vs_ntsc_encode.bin index 87c608156022f9a4b5a0964a983fd8773500c2a0..2626aceeb7aa4d3a455452dbe4e25be8b45f7c3b 100644 GIT binary patch delta 116 zcmX?of$8)GrU{Ayv0qK=)-{-1yY++Rto-jki5m??cqAHU{S0GdU|=xwwRGXgEAU#W yDYBh+ckZ^$u{>`a*=GN+_c!U>?C;0o#dJ1rbLfl@jCgd+3S(kiym`x<>D&Mn$}X<} delta 116 zcmX?of$8)GrU{AyJ;j-fYk2+Y;(5+`a*|g36d+cf3?C;0o#dJGlbLfl@jCgd+3S(j{+Pr1XbZ!7sMKk*V diff --git a/bgfx/shaders/dx11/vs_phosphor.bin b/bgfx/shaders/dx11/vs_phosphor.bin index 29f497b4a65d5bd2ed66e3703771d57103404be8..8cd89f18b9949213f8020a0adebded5e46be6930 100644 GIT binary patch delta 149 zcmX?of$8)GrU{Ay8UhU0zkJ))AnF~ZeZsjtXQQDAk3_?)pJ9v)3=BaQnO~n;w>U4_ zxrec6W>wziSe`eIY-?U>`I~fZ_V;7)V(Q4*96I9zBOV>I!kCnDfMy{;ZenI0LtcJf VDo{vwm)=K4hR&SLSLc**0{}XQHjMxP delta 149 zcmX?of$8)GrU{Ayvo$8moZeHv=Cs~w>AbVmZ#Ei=@JOhXeGOw|U|={=e?3lx{jT5q zOBFjfR&HjEYUQDZEHiypmz=%i3tS}}ed!Shekeis9$B>tw UmkJcp-KF=DkpXDR)j4I{0I9||5dZ)H diff --git a/bgfx/shaders/dx11/vs_post.bin b/bgfx/shaders/dx11/vs_post.bin index 70639fc75f7202638cda06898202efa8fc86d4d7..a8827bacda26a3ce03628e4c4a26bee03c09e36d 100644 GIT binary patch delta 1092 zcmb_bUr1A76hG%qZJREfxaMEHgkhPvEj3&)n7L%=g}FO5OU#Ek!6;2_uwLvAjfw&r zUs^;y#UAp(WYj~D58C;zi(R4KI+yRB`~7~u^Sj@`V8OdOsgk68?>pjt0J9%z+>TqIn=$X{# zxf=b70K@>~PL1c7Ho*xg_^rr1W%UYgQc+y|Xjgj_JvE=CF@ zO{HunO_SU~_qfcJ#l-wgnUp&WDG*sYXd|sH6e6vd(F){Rt#gfsxYI!$Tc=}_8p}U1 ze-E!M*0HM^TcTqtbgZ?DJM;Kco1!6 DAO<4s delta 1316 zcmd5+Ur3Wt6hHTy&TY-uhX0HD1kEjVjwn*6v@$en(VUwI6+>*JLGGJ#>h@slB`XLu zZv=Bm zk{jF7sqOdm4R(cnu{Z|~AYelObk`|i(APiU69R!gf0P3k68B~gb{=R7j=go-M_+Y2 zW?ZVr@R3;9H_H0In{XvAmS~qLRVBa@Vx`qhVq{^PiAX} zoEP61P0Np}pNot7$wo`&ymnoGC>RhTJ$&Gd&=uXy|9x`t=HW}EBP{d5#LErkoniUr+BO?V{=EGop>C zHn+|V&l5t8sv4Smj5j`b*wnj%)ng~BMXeK!s!>8yu1RegT_$N7YV)>cyaI3;31s7) zWI+r$0%_@fR&k92*C4-&>(_CrcONNEOLwr!DzeeAyO5;m1u2GCWKhN|x!W*&eO+qVfh-sH^jf7G9mb5P0hrF`hkvkx-AYw76>F{ z3n$QjkG^anEc;=q^IGx+sDuX0Bfw7Rk!&%9sKZ-LJb14yL`-$qYX7SqEfq^Hvwj=b za8cHkCF0ldC4xPcDcT;{dgdP>W`C2;&HjEYUQF}rH;2ynz=%i3tS}~}xj?fJAU82Hk0CEV WFBK@HyG!pQBg54C%~$7?aRUIU?>eCX delta 149 zcmX?of$8)GrU{AyduKj7ro;HHvE%xFqr{_Yzic!V;gL`+`x?f`z`zi9tw UmkJcp-KF=DkpXDR)j4I{0Ghfv2><{9 diff --git a/bgfx/shaders/dx11/vs_screen.bin b/bgfx/shaders/dx11/vs_screen.bin index 766a9c4e93b1959a88289c2f51e11d6b1fd1f261..c3c17a3621c943bd580677aee68bc86eb6880434 100644 GIT binary patch delta 108 zcmX?of$8)GrU{AyuXP^(Xa3o9-SwDsnAq>>4I2$bcqAHU{S0GdU|`7ij1vBJv)Oyz qg9lYn_p3HS2_V@edjYs9IFeb*5&0FS7=LP_(E-bSE diff --git a/bgfx/shaders/dx9/fs_post.bin b/bgfx/shaders/dx9/fs_post.bin index aad4df72ddd22110b96af647c4d210f32b9abaad..b0e0edd02acd45d6dd1676c7d5b410b7f326b40e 100644 GIT binary patch literal 4835 zcmbVQU1%KF6+SbPrFAT6rHw2rq(4jRQm1v56;^|5oJf}Bztkl^lBgd9<4}RD}QXDXJ90V=e6!KtFr*#|mUv1My4=My=XrOvfAhdbNLjuOr@0@#Q z=gRI=2VH&le&?Kf&i$D)_wK2wGwn~EymEGcQl8^2r|vA(%X9gflP@hV0u=)$lUt$lUp zJN10QDHO|I#;c_xbhDDL74v?vTFF=sK!mY+^EKD4w4!PQi)m5w z7msA$E^=PYN*74XgVwCCWUOv58G~tc+5*Pl zG~U#>p>a#&`@r8Iun#rf0sa>4u5N{c8V><~2mYwWa~dybENKjYe}LX);LE_P8h;A> z5!%;*uK+iISAn-R?f`#`_8njd?CMcCsPUl25#Tk*$AD|VY2bBW0r&`}z}NVK#s;tf z`5N$N!0Q?}fK9aD1-=g40lope1N=F#D@}9*m<7HG90C3UI0^hEa2j|ESOESW=xcmI z<4YRXfIJ^JfWHQAXxsw6h4!|_Pk?_!JJqXj5Xj>>tnoPTPmn(i+yGtx{uStJ3^X=? zZ-c+8@imP%fPVx3Ht_Gj+rW2#A8DjMqVc@vPE;b5kWSM*M7=(m+6GT zKZ6uI?XJ4~eyVxoOsk#;1=v1{`o%`g1){2$j*c06ESo^`FFYyvo$!jb#>KKJByS!+ zmhe7aMq8lf$UXgW!vA)$Aa+MgJNW>qU62(UUfDK+o0YsLQP6&^&yf!p_0z6@qVQbZ z^WB0ddNj{b(?RJcides#FIH%=ulGwMobx`^%4drsi%N+>YixW<-$e zvR4I5hk&u)qnevExM|H@Fu0QDRt@e&&AnuBYnpo<$m8X)-PGI$BMQf|1^f`@uI5;; z9h1i2-Tf$R%X$aZMAC8K7z%SwYi@}V_H65GE-<*un!BPowq4WQO+#-(b6dbT<{iy_ zY;Y-@3;5{=#(G)J9X7ZT)Oj3Z26s+#=Yes|1=PP)oUc{A>Vls=^z0+qGv}txWvAqH zk)5cPm$A)j+2Pz!ZfH1{8y+4Se(cE65xN`wizcQ|jDH4QJbn(l1>yMIn)LU5;rO(ga4!qTC)I@eiEw;MO}ICO<0ERq{Y5xFn=y;CNig`C#{rgzmYEpe?r$VC(*Y`aNmXAm+?FhpDLrutZii z4AectWOV8^bnY{1-73V+xKD6fK7{Hfku>EFku>WoW?kPKm`ZL8+|t=z-4bZobB;K< z|LbjRHlHEd(@*IT%ZMkyry_XkR}a54%KU!tKNxuBiC0e!jQ(TwgU8=XpB-a<0Q~cx zeu0lwqwl5vJO=(2^9R6JGtaA|hV(~-Z>NoKRY26);5t%EfVGx7R2q~@hs<-`LLGAK zEDJg_Axa}|L(b_D9NE}E0j@xylG)Iu0Oz1qn`kEJrzk{vULnGPt{LH&_kPuc@w&ujq?&u2lsOg zCw1Vv9J`H-!(7O6i@IP>m%3;&?4tgV{b9bK_ivPK@yGf+X7*uRz&>qCiw?mj$7xe1+R-H&{j!~kvqz7s5vZ| z6wCqpRQ4Q$X=CnX^vn7vY8?`r^;W;=KV+R`uXIA6WV~ulI|Jxk?iika^-hBka4D1XPXOO Ow{1$LWbg55oBj)A;|UJ{ literal 5228 zcmbVQTWlOx8UAN?ZEtEjcDAnV&;q6xz3tw# z7u!gcn5YI`DzOMl6mikIa-n!DltMrewA4T(+G2^9AR#p`Mf(um{9qxFq7L7G&ObZH zE>Da+`Sa~gaSC=Oo3F%F=b~$b^D_;@61}KLz;9h2$XJ`KW^<06FJ_SWaVWam zirQ+->X({|weq4PHHE+(gVkEPWUqfcriQY!W>>R$gcyJ_7o)J}edr}Z7bcTWjuO#3 zQT*V6EzRRi;?3aw7~b7ZBDaHR>TD{XEiA94^69*jTBv1nnbgAa(t3)McgmGiX8qCB zQpGM6E7kFZY+-yQSIJSc$?=IiuhpaRj^IGAmd6Ay2+jzm1XqBsBC)EVEBF%dr{EjF zE#NiaHgFgCGvH0Z7VtI5`@o+A={V6TK)>LK;25w8eL`>s_&vz;z#jukf*ZgeLf!;6 zfZIThcOCdTH^8JR*1H!ZKgTi}w9zvO;aQV}!%uzh=i-!FrqkP#Yf5|9Ms`ann zR4UJ?B@pR1N#)OLx_%y0z%_YZU_Z-iB7Gh@&*RtgRQm%1`kdi6UCSGqX7i%q2i+W& znAxgRqA7z%4F%KbaU&kn^sjUDlu#hTA;nfM>P$~;5OGfJnk=XktNd^MX< zevg=Ssa;NwE~W?`9=$Nl3Xd$n@R;)gsvk^YJbHYz-NkZxk(&6lj_{Y$mFK5&PP$Bk z&~QKU?~_jTeCD}YrRroY~GcqdET&J)#r^k*Ao$2?uS)An5gcH6SgBfx(!_F3FG_5 z%WWG4@^b_Dcf8zBw}m?}xQGr;{XpMtM7S}7drY`#gPRj>-r!2YyC^W$r%R88m8er-e%Z{kF}ZoWfhc>-$zwcJY1_FV_)5 zyiJt(c^!BaFL&Lpa4n$kyD!`w;n+8dvjRUOKtJcx!X*rDPPlo4D+%|4!EK<-`PB{X zN5Z`Z^mDm}^5yJexmYPKRYyj@a%yDy((I)X{$!o<$W$?3!W1u$OvK0I;}h}t#Kic- zBM+ZBO&@yyqN%y_llLL#pKwEQE*b`~Y<-vL`{3@Nllg12sFR}HNIb(pHs`fsM7TIG zgc-Z$rZ_(K23$^Y{fD@9#p!k1kM}Lb>2Jj6>Wbqta1hVG|LFCGa}V}R zbs2&pLWgj-CZKAoTsHOwNczqKUhNB|iv6%1 z|G&QMX7kHL9fQ=@c)#zd#EbvApN}2q-tT*Nm-!*^-yZzI{ySpl^fRWsdIZm)C0c@h))gn(J`XnJiI&ZBz(fi34P)ca?(D% zs*W&iDnHI8OkJ?~H*!C?(u?@IZQYPt;BRyPsC+HN45K~Fb1cq}Xb1W3pngyKFv9tw z4|(i%l%4K}9TkgxaVaT2FUx*i9D{ARE{b+>{4I{byc)M?RQd2Ni2e&5@=z`S diff --git a/bgfx/shaders/dx9/vs_post.bin b/bgfx/shaders/dx9/vs_post.bin index 43eec77a6f459c762fb22defd7fa5b2b7e836533..c006fe0c6acc7240087913e609e771fab243668d 100644 GIT binary patch delta 565 zcmYL`Jx@Y07==%73xbF&7&qhKV2m0P7Y7%=q9i5`MB@eoh>-A+K!`eVH4bho8*lAN-iXJmUcWG=87)CuR2Fbo^1q z3owZaY);G-CdQ1BW^;ZxF&&%nyNu1vy?Kw$OLUL(s`cmli1S>RE z+jYQ~oW7cukY910jW;D-g<;3Ru<1AJLAmrhW=uj3fEO1Sx?IH(h%g^EP0aHT%p9!& F`~z|GZomKl delta 619 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 diff --git a/bgfx/shaders/glsl/fs_post.bin b/bgfx/shaders/glsl/fs_post.bin index 23e7d6876069722e3b91bc43585c12cc78b5eca8..056f8728347721b825831e21485cfff440111a53 100644 GIT binary patch literal 3603 zcmb7H+iu%N5LJq%7xf+lZ65cLv{i=G#g>pZ4`~{-PkrbI5R61w3`A0;NLg~?|LEuT z?9A?RNs4d-7=kqSGka!s{pRmKKK<+WfB*b(@MRV5Z=+p!Jbm(LFnBch2EX&FSjOQh zN%t)KstW(9qLn524pz$|jqN4x{aE6LrPVZ(|n!WLdv0lABE_ zy|wmPS8J#G!BW3V$}%oEs4d^bGAPTRTK0#iNTM>yGgf^I)h1fyw|337aG6(`3W7c; z%j&?sPb^8J74Y9w>D#EVgMMCxyZly{ieKw(o~yz?tHLr#Rcp{*1{FqWo&NDYEaM~2 z2!CJfRVn=Q<=2A&V4afeMjYbhR2;%(zRe5&#n2LuAx4BHlCGesvSghXDLViN)1WJ_ z>Cn*`T68oGdYsYPH0f6pA^O!eZ635@`t+M|$NTk6r+&SmRoBF#SD%t-)~Bov{TfBP zj)6_Tj*@8DkrEv{Qc25>utCpSyN}Y{HZI1m1#$Jff@cWK%#)Q!qa+iKJA6MBOvG2w zKK@N|Hw<2|Y%GYe;aL7wU&XJ&vB)fbmd<0x_huu357%wkYPZY(ZHIxdH=K7oQB12m zi0)7aCaSE87?>RbJ<>J0(m>W>``p4K@GyNsBx~U~j;hQ%ieFH=9>wq^{uMkx= zVd|ZZ?0hfc?LJnWKWnP&y6LY!F8y_#e)d3m+q5_RoHYv39MRWBv@9J*Nv_a%{e2=X zH1uot+}SQZ4$Gp(GJgPzZQ8(MPYl!CX^SpInjEnNB>h3sk(?^}a7WFNWZI1k-UaX) z0#yehG(PS|wNy>Y@yP9D_pBby$wQ9+mox1KK@?&4G_(j+{;%!@g7zikhW$sxhvFi+&S2_6H#qOr}r6KAa-9^T1iy9=T1t%~WDK&4K+U>eL86Sk%@&)D`65TUupAV|;=Ohu;przy06Bq>WRFfG5;IDlg{OmxnXt~0IZdvHf zyMq9w5r%?B!7|Y?T!l^`Umc4N5=Y^Cev z-=Ngsd?mir>CZ8bA8P7&I_&C3bI~yi?787pb7H@V5Wjg5Hc->ee&&1?>-9;ft*Y{)MzTG+cD^}hgSS=?;HH$`+q PkE?n|2S{>191i{iSnWxN literal 4012 zcmbtX+iu%N5LJraqBgxDK=Zgy0cooQsf%sFbsu^O+NV790|;8CY__5(P^2s+@qhFi z`jtJivp14r9H2m;NHeoDXJ*dKu3!E6`^T?;`{$1rgQs=8y-zmr{_xS0!Qjc@8GbLy zG+oCxS-!QhqAnMyBm3Ie70cx|t=JOMO_^?zGL5fSMUk`g8!O$Vi>fG%c)Li}t8AUd z$!c?#bj8rGQWk$t0hRT2ncd!1^jm9RbhR$7ZyohtSyiP9f-ApE$teeW?%3~=GE1tg zShMQOI=)U8f5(err4#uM)_2KGaUWONDvk5vMq&QSD4hJhFv5DrE@5_8=hsQ;mf}f@oR~KD%hXah?J`!s5z$;CwWn?RR*7I<0{>wq4@XtR^j8H|2`WGkklbt-wO0& zDt4SqcsX>$V~F8lfuJ|g)az_nlsO+j2F#hR+;XR@vmEN`_#F4Fqit}iSIgY$s10jm z5Bk-TP5o+@bB|i}wlN}Sw&5o+g(LRHoIx)lRUFVp~-HuXnxFeNZ z?nsH#9btppR=Z8|%_=R&zY0n8;|k6gv@Wt6ktf+&c>eJ1P%w*M*VU%3;^jf2lT{dLj6N9<4)@GGPDBA_S%_>YJkL|eg1z_=$U|Sednb(WpoG3J-r_{l z6^BRO6XYFI-uxkPKG+C$@yqJ~k*=;d)XSH`GmB6%4$7aT&P1fTiYniL?eUbHD&S`Q z*dq#~Fy_eBX;N_5^Z5snuD0nT*2RQ52*tPkzCVog*$PD- z?0#jR9>v5C(CG*Fjbv0Lj$;R-cP=z@T9HvyOpDx_6jq#Ke2*jy9F7$MY58$*v^0o- zRV~`prIh6gr?7Imy3PR@^z_ZnHI3s9Z{9?_LSPfg?NPd+@d8iO}EV z0@Uc_>qA1G1kp5_%_sVVPk@h};j2;Q*|;Zzy*>>jQE(Prgp;YS+5W%BN>b0kB$=Zp zdybH58s->5w>|u<0bn;H)Xr&ydD+Oc@&uDD=h-pQUVM|IKuA*|_~Z7XJz+4O6P^ay zWkGRMU!1oz*gAwP45Db-QoTX(Oay#~TIG0Q@A5}S&3&Z-MC+>kKuYM!no_8xu3r)d)K7`{PZXIhUI$@>qM1t3TsHAQ$ulOC zk{=+Mxnm;xYB`dq%0=DksxMJU%fV?pDvTkOf3}5yN$#0il3((J9zkkFy6=Sdc+?K< o!$-d=<(@V-Z4}aPO3~<@=h*EkepM#7^6d%K+T?QhFdPp41DX`PjQ{`u diff --git a/bgfx/shaders/glsl/vs_post.bin b/bgfx/shaders/glsl/vs_post.bin index 624be0f29f05c69c46c7943a0ed34363c7a46a76..510526ec5880f8c8359ec03d49d077d7aabcf80c 100644 GIT binary patch delta 164 zcmZ3(x|3ysv=(n^d~tqhQF3a0N@i{`6C(oyBLhe*xhOR?4@vAJ<3zV(Y6z9qT%~!L zY57ID3T3IuCJHDzCL1%Za)>WUtw_$#FG?{~uvO5|NQCnZ6tqCf5k~1%RB9^dqZ*-C JF}aUP4gin3I1~T? delta 280 zcmdnVvW9hnv^HmHd~tbVL3~9e6C(oyBZCl-pOKi7Umjmt7N4J%R-9S_kw|8m=z2^Y zqSTtJG%qtPzbIFsEH&9g0aMFlL&jD0smVqPCAkG2sB+I ZF}@(bII|=(KTofsQb8MT^JHlzIRNF$TSou@ diff --git a/bgfx/shaders/metal/fs_post.bin b/bgfx/shaders/metal/fs_post.bin index 4da4ca2e2c1bf4af3edac7f8197e13cca1a0a1f8..133e08292a4b93148f9d93695856e8555bba2caf 100644 GIT binary patch literal 4384 zcmbVQOOM+&5cZ*`z2zV9R7kt7Vp_J>M$#NwG)N9X4na=ALg3o8twIl153ihL|3`mr zhchH4%G!0(iy)K3nQy*%aOAh2-u?3NuYcc-n-sVNxwO>c&gE&OZ$pV-$Sj+2TEu&4Gmd^S=wb-1m zmg_>wEXudrQdW+9xfWRxXEGAWVK0WaKqisHTlYo0+gH(LiRVoJ9aohEPAui%o`JQO z%E0j6Q53PL;yiP=A&mLMkUzAs&g-nFkT&Y$ke>QDMBBbj??o|Sgt5fF)#pg~4$AyZPB^>S0^l+M==BF>mMki1b^B~i@2d?_ojlTn=A-Hq8g&){cY zqt3Tq8J?-(%zeGx%EFuYcXxn!%ou}Quj)chH?OfG-mp@oKZxoLlpV8Dq=!TnsHsd3 zk&)8t7c`a_gN{-T0EU!WL8Dg*`d8lotV4z73jN9z{Zxg2h*Dw+M%>0^3gkd7M^m+; zU)k@>BOZfJwX@%-D@?sfFds8`_(!NutL32Xo1iVTQknd5b%$aup ziJKmB9S|c3+Xi6FJdE1Z_cSt}Aa{rWLtjCa(W-tbD_w~PZOY@p1VP1H=6ObC(6HA) z#>8jezcagd(u=;2?aWn3CKdXS0ER&6L{Ul)0tuDC7@BG+>XbLweS>z51#;DRGE=85 zTQe0>fd7)>S_9p-St_d0EnTHkqhju;m@5?nS#hIRl}^gf$hHko&0gyA`XQ4G$K(P` z_I<|=26{=*_4$?-dz{e)az>Zs<`%5z@Xv!&LpmOrOiHO^Hz=y*hHxzZ7mj6%V{rjT zSM(ViE85e}tw2At)^+81dgT^^W8P=%+OV+HRnpG~j$^=CPF~`dPg=)T7aVhBpYe=i z1G91A984HbK*#l2+SEst=A_Z-DI6PLt7!_FOkbgNK5s3w-svuyPtGlK-Tp!4?)8_h zp^0D*@YA@_ohnpCI%ekK8ylf-OiaO#uj4cSaDoY%rqKwndGsv;N7`cB2B3oSLg{2s z$XHIHZ>3CkGI$V~4;O*0N_*S~(#`pvU4Vql_m)-2G#nTl;9XnqiFJI%`9fhOeZ4w2 zQyw?o^ngd>8#It^TJ@}T8>qG7_F#@p_-QjZM_#a^f&{_n zM!=%gemlL~LUDUJSIrzg3*Z*RTY?RB_Tc0=+|Jy=$){7-%sGuWfZ?U}CJgwD&sQNG z@|6ouAERl|Wx<&cgT@-?!GbR*;mj5tCXjX6y-T>dOi}@bhRJ*$Y#O#fJv9l^)kIuh zD(X#TiK)XmkYnHVnO^29@&3}!6+MjzR3%WAh)KJzYsao?A*>{Y)pQPB%>F>$8INt{ zTUi|+lNL^3?S}^j$xyH`uxuN!3kE6WEuW8uXzfhEj00(|P(u=Jr{)5p_S0fTMvS%_fc>6buY? zt?Tmk=%zM>qQ_S#Nf@o^4!0SszNj!3Fg{My4Mh0CB`e}WG9AKU9;aYpR$TzYy|_aY z3<;`G@SbrmRGd1DORL~)dTzJ$#i%cVXN;mFF?@{BzY*;ffE#(x{d)m8v=$V?Lc#}J NMqI$R(BswB=s#dLU%LPR literal 4823 zcmb7I$#UB`5cOeBKIRK>a*?)%C2H|fiF25#Nlgx^98x)@Tr60IEY5IIaj~f+{*U>j z`K)Plqd|b8?D0jGuyjAX?tWSM8O8}Z{%VW+5JuRhgC5^eqp~V5m{usw}HJ7=0SI z^SN!<&_-tKg}Bd>50$+CT^l>N>uZs&%PM#Mw@Ljdw@J6N02TtqR+Umka+l_{KVG)g zN{x)u`f|OlRpag0R%$CNmE2}!nUBsqs8ypeTS~NhS!8LU5}9o`a(oKbWNLiswo30e zjkfZ_iV?il^L{vfMVHfdRS)3U^8C$i#_anc_T45z8GaKR=&;^o^%=L)*Dy~I9%tnrAh+j!uX2CRCP6T{} z;b0T*KYPVW3P)tcfr=;Uc4(ZA(&Ssn|74-v@pk};lL4|H5l0ByhGZfFjN>c}46=|Q zJ4Aq^?_i3p>Yv(+yW-Kf3gT#rpwhJn0yY_S;vJAN4aLu&!Vd1tU>Kq*`Uc6RMn5Nj zbD(spDWwkr3AG^vxw0I2vIm~8ugUeviHTUNiF67a*1X3h76>uI2VQC?#*Ou2q`Tj1 z&S1%30weng674#&_9RqRtN*vj?4UnBw)0VJ18M6?V5Tj~b4H1z^j8nW_&J>Zw*F@7 zw~c|l7zImr;9(*!`qVprfj)Psfj@@hk_JsaUxNJr6n51Fff-tgQx5(GB*m%G!#;1? z2RJF_IV*|TdF7eD0@GZ8lyUntNaIc!GAvVvV`UMzrKc<96p9UNCCt;#RP{{|x< z#31xCVC(aM3UC1ou<8^rMHs)@G{ zZ3Ae!NWSL00vxzBML6_?H@fR7#th8fhn@od?L#*S=0HI%L9I}s_9>-KADsA$q|{%>an~ZugDU z)o|!_`bk~MK)re@QAk)JSkI&9-OkvLO{POZ*Fu#Ml5|WA+#1I_c00>j>S!*9&t_(Ep zC(oRu=IJRI0SnGOV+CaY4#O+rV6XVR%(>6ImqpIBi@nI{PS6O4=`(B?on9E; z1Jr}qO3)8Oj3o5DQy|Bl8Hlipd~78Ax-`7FVf#*T>94NgMdHwFUM)f(Yxsd}jO8EO z&hh)jQfYc>)8caEbmvG&7F;3=7YU%~g^>O~1386P-@uhFODroUV_}F diff --git a/bgfx/shaders/metal/vs_post.bin b/bgfx/shaders/metal/vs_post.bin index 70298ecb2f83735b99a69dab309e5e1d470105c5..7d355aa1df15bbf88e83e4dd5599a109795f717d 100644 GIT binary patch delta 159 zcmbQiF_)buEZBp^-*tv314AG4MxGo-rTo&OLmp delta 262 zcmbQsK7)fNEZBp^-*tv30|O_^MxGo-Ky47C^ePk-Z50gk z3^X+rs)33W;93-H6%dNi?9i*M0GU{;keXARicOz9%ocQw5XaX}{?8;O4>mqiFEPF# Wzc{lbGe1wSqEbN{?tsY&%(eiFG*=}6 diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp index 7f2d17e251a..f22af0adb99 100644 --- a/src/osd/modules/lib/osdobj_common.cpp +++ b/src/osd/modules/lib/osdobj_common.cpp @@ -143,7 +143,7 @@ const options_entry osd_options::s_option_entries[] = { OSDOPTION_BGFX_BACKEND, "auto", OPTION_STRING, "BGFX backend to use (d3d9, d3d11, metal, opengl, gles)" }, { OSDOPTION_BGFX_DEBUG, "0", OPTION_BOOLEAN, "enable BGFX debugging statistics" }, { OSDOPTION_BGFX_SCREEN_CHAINS, "default", OPTION_STRING, "comma-delimited list of screen chain JSON names, colon-delimited per-window" }, - { OSDOPTION_BGFX_SHADOW_MASK, "shadow-mask.png", OPTION_STRING, "shadow mask texture name" }, + { OSDOPTION_BGFX_SHADOW_MASK, "slot-mask.png", OPTION_STRING, "shadow mask texture name" }, // End of list { nullptr } diff --git a/src/osd/modules/render/bgfx/shaders/fs_post.sc b/src/osd/modules/render/bgfx/shaders/fs_post.sc index 4a77dc88cbb..eab3b909909 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_post.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_post.sc @@ -10,14 +10,12 @@ $input v_color0, v_texcoord0, v_texcoord1 // Autos uniform vec4 u_swap_xy; -uniform vec4 u_screen_dims; // size of the output window uniform vec4 u_source_dims; // size of the guest machine +uniform vec4 u_quad_dims; uniform vec4 u_screen_scale; // TODO: Hook up ScreenScale code-side uniform vec4 u_screen_offset; // TODO: Hook up ScreenOffset code-side // User-supplied -uniform vec4 u_prepare_bloom; // disables some effects for rendering bloom textures -uniform vec4 u_prepare_vector; uniform vec4 u_scanline_alpha; uniform vec4 u_scanline_scale; uniform vec4 u_scanline_bright_scale; @@ -25,9 +23,8 @@ uniform vec4 u_scanline_bright_offset; uniform vec4 u_scanline_jitter; uniform vec4 u_scanline_height; uniform vec4 u_scanline_variation; -uniform vec4 u_back_color; // TODO: Unused in current implementation, mostly -uniform vec4 u_shadow_tile_mode; // 0 based on screen dimension, 1 based on source dimension uniform vec4 u_shadow_alpha; +uniform vec4 u_shadow_count; uniform vec4 u_shadow_uv; uniform vec4 u_shadow_uv_offset; uniform vec4 u_humbar_hertz_rate; // difference between the 59.94 Hz field rate and 60 Hz line frequency (NTSC) @@ -64,9 +61,42 @@ vec2 GetAdjustedCoords(vec2 coord, vec2 center_offset) return coord; } +// vector screen has the same quad texture coordinates for every screen orientation, raster screen differs +vec2 GetShadowCoord(vec2 QuadCoord, vec2 SourceCoord) +{ + vec2 QuadTexel = vec2(1.0, 1.0) / u_quad_dims.xy; + + vec2 canvasCoord = QuadCoord + u_shadow_uv_offset.xy / u_quad_dims.xy; + + vec2 shadowUV = u_shadow_uv.xy; + vec2 shadowCount = u_shadow_count.xy; + + // swap x/y vector and raster in screen mode (not source mode) + canvasCoord = u_swap_xy.x > 0.0 + ? canvasCoord.yx + : canvasCoord.xy; + + // swap x/y vector and raster in screen mode (not source mode) + shadowCount = u_swap_xy.x > 0.0 + ? shadowCount.yx + : shadowCount.xy; + + vec2 shadowTile = QuadTexel * shadowCount; + + vec2 shadowFrac = fract(canvasCoord / shadowTile); + + // swap x/y raster in screen mode (not vector and not source mode) + shadowFrac = u_swap_xy.x > 0.0 + ? shadowFrac.yx + : shadowFrac.xy; + + vec2 shadowCoord = (shadowFrac * shadowUV); + + return shadowCoord; +} + void main() { - vec2 ScreenCoord = v_texcoord0.xy; vec2 BaseCoord = GetAdjustedCoords(v_texcoord0, vec2(0.5, 0.5)); // Color @@ -78,72 +108,52 @@ void main() BaseColor.rgb = vec3(0.0, 0.0, 0.0); } - // Mask Simulation (may not affect bloom) - if (u_prepare_bloom.x == 0.0 && u_shadow_alpha.x > 0.0) + // Mask Simulation + if (u_shadow_alpha.x > 0.0) { - vec2 screenCoord = ScreenCoord; - screenCoord = u_swap_xy.x > 0.0 ? screenCoord.yx : screenCoord.xy; - - vec2 shadowTile = (u_shadow_tile_mode.x == 0.0 ? u_screen_dims.xy : u_source_dims.xy); - shadowTile = u_swap_xy.x > 0.0 ? shadowTile.yx : shadowTile.xy; - - vec2 ShadowFrac = fract(screenCoord * shadowTile); - vec2 ShadowCoord = (ShadowFrac * u_shadow_uv.xy); - + vec2 ShadowCoord = GetShadowCoord(v_texcoord0.xy, v_texcoord0.xy); + vec4 ShadowColor = texture2D(s_shadow, ShadowCoord); vec3 ShadowMaskColor = mix(vec3(1.0, 1.0, 1.0), ShadowColor.rgb, u_shadow_alpha.xxx); - float ShadowMaskClear = (1.0 - ShadowColor.a) * u_shadow_alpha.x; // apply shadow mask color BaseColor.rgb *= ShadowMaskColor; - // clear shadow mask by background color - BaseColor.rgb = mix(BaseColor.rgb, u_back_color.rgb, ShadowMaskClear); } - // Color Compression (may not affect bloom) - if (u_prepare_bloom.x == 0.0) - { - // increasing the floor of the signal without affecting the ceiling - BaseColor.rgb = u_floor.rgb + (vec3(1.0, 1.0, 1.0) - u_floor.rgb) * BaseColor.rgb; - } + // Color Compression + // increasing the floor of the signal without affecting the ceiling + BaseColor.rgb = u_floor.rgb + (vec3(1.0, 1.0, 1.0) - u_floor.rgb) * BaseColor.rgb; - // Color Power (may affect bloom) + // Color Power BaseColor.r = pow(BaseColor.r, u_power.r); BaseColor.g = pow(BaseColor.g, u_power.g); BaseColor.b = pow(BaseColor.b, u_power.b); - // Scanline Simulation (may not affect bloom) - if (u_prepare_bloom.x == 0.0) + // Scanline Simulation + if (u_scanline_alpha.x > 0.0f) { - // Scanline Simulation (may not affect vector screen) - if (u_prepare_vector.x == 0.0 && u_scanline_alpha.x > 0.0f) - { - float BrightnessOffset = (u_scanline_bright_offset.x * u_scanline_alpha.x); - float BrightnessScale = (u_scanline_bright_scale.x * u_scanline_alpha.x) + (1.0 - u_scanline_alpha.x); + float BrightnessOffset = (u_scanline_bright_offset.x * u_scanline_alpha.x); + float BrightnessScale = (u_scanline_bright_scale.x * u_scanline_alpha.x) + (1.0 - u_scanline_alpha.x); - float ColorBrightness = 0.299 * BaseColor.r + 0.587 * BaseColor.g + 0.114 * BaseColor.b; + float ColorBrightness = 0.299 * BaseColor.r + 0.587 * BaseColor.g + 0.114 * BaseColor.b; - float ScanCoord = v_texcoord0.y * u_source_dims.y * u_scanline_scale.x * 3.1415927; - float ScanCoordJitter = u_scanline_jitter.x * u_jitter_amount.x * 1.618034; - float ScanSine = sin(ScanCoord + ScanCoordJitter); - float ScanlineWide = u_scanline_height.x + u_scanline_variation.x * max(1.0, u_scanline_height.x) * (1.0 - ColorBrightness); - float ScanSineScaled = pow(ScanSine * ScanSine, ScanlineWide); - float ScanBrightness = ScanSineScaled * BrightnessScale + BrightnessOffset * BrightnessScale; + float ScanCoord = v_texcoord0.y * u_source_dims.y * u_scanline_scale.x * 3.1415927; + float ScanCoordJitter = u_scanline_jitter.x * u_jitter_amount.x * 1.618034; + float ScanSine = sin(ScanCoord + ScanCoordJitter); + float ScanlineWide = u_scanline_height.x + u_scanline_variation.x * max(1.0, u_scanline_height.x) * (1.0 - ColorBrightness); + float ScanSineScaled = pow(ScanSine * ScanSine, ScanlineWide); + float ScanBrightness = ScanSineScaled * BrightnessScale + BrightnessOffset * BrightnessScale; - BaseColor.rgb *= mix(vec3(1.0, 1.0, 1.0), vec3(ScanBrightness, ScanBrightness, ScanBrightness), u_scanline_alpha.xxx); - } - - // Hum Bar Simulation (may not affect vector screen) - if (u_prepare_vector.x == 0.0 && u_humbar_alpha.x > 0.0f) - { - float HumTimeStep = fract(u_time.x * 0.001); - float HumBrightness = 1.0 - fract(BaseCoord.y + HumTimeStep) * u_humbar_alpha.x; - BaseColor.rgb *= HumBrightness; - } + BaseColor.rgb *= mix(vec3(1.0, 1.0, 1.0), vec3(ScanBrightness, ScanBrightness, ScanBrightness), u_scanline_alpha.xxx); } - vec4 Output = u_prepare_vector.x > 0.0 ? BaseColor * (v_color0 + vec4(1.0, 1.0, 1.0, 0.0)) : BaseColor * v_color0; - Output.a = 1.0; + // Hum Bar Simulation + if (u_humbar_alpha.x > 0.0f) + { + float HumTimeStep = fract(u_time.x * 0.001); + float HumBrightness = 1.0 - fract(BaseCoord.y + HumTimeStep) * u_humbar_alpha.x; + BaseColor.rgb *= HumBrightness; + } - gl_FragColor = Output; + gl_FragColor = vec4(BaseColor.rgb * v_color0.rgb, 1.0); } diff --git a/src/osd/modules/render/bgfx/shaders/vs_post.sc b/src/osd/modules/render/bgfx/shaders/vs_post.sc index 89923cc9338..fcc643b4c8f 100644 --- a/src/osd/modules/render/bgfx/shaders/vs_post.sc +++ b/src/osd/modules/render/bgfx/shaders/vs_post.sc @@ -6,14 +6,14 @@ $output v_texcoord0, v_texcoord1, v_color0 #include "../../../../../../3rdparty/bgfx/examples/common/common.sh" -uniform vec4 u_swap_xy; - -uniform vec4 u_shadow_uv_offset; +// Autos +uniform vec4 u_source_dims; +uniform vec4 u_screen_dims; void main() { gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); v_texcoord0 = a_texcoord0; - v_texcoord1 = a_position.xy + ((u_swap_xy.x != 0.0) ? u_shadow_uv_offset.yx : u_shadow_uv_offset.xy); + v_texcoord1 = a_texcoord0.xy * u_source_dims.xy / u_screen_dims.x; v_color0 = a_color0; }