From d9153eb306f8b3f5e1c9c66cdc3ad6e41d09ccac Mon Sep 17 00:00:00 2001 From: "therealmogminer@gmail.com" Date: Tue, 29 Mar 2016 11:28:07 +0200 Subject: [PATCH] Get bgfx post-processing working with laserdisc games, nw --- bgfx/chains/default.json | 9 +--- bgfx/chains/hlsl.json | 24 ++++------ bgfx/effects/default/blit.json | 12 ++--- bgfx/effects/hlsl/blit.json | 12 ++--- bgfx/effects/hlsl/color.json | 8 ++-- bgfx/effects/hlsl/deconverge.json | 8 ++-- bgfx/effects/hlsl/defocus.json | 8 ++-- bgfx/effects/hlsl/distortion.json | 8 ++-- bgfx/effects/hlsl/ntsc_decode.json | 1 + bgfx/effects/hlsl/ntsc_encode.json | 8 ++-- bgfx/effects/hlsl/phosphor.json | 8 ++-- bgfx/effects/hlsl/post.json | 8 ++-- bgfx/effects/hlsl/prescale.json | 8 ++-- bgfx/effects/unfiltered/blit.json | 12 ++--- 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 -> 45228 bytes bgfx/shaders/dx11/fs_defocus.bin | Bin 49898 -> 49982 bytes bgfx/shaders/dx11/fs_distortion.bin | Bin 60482 -> 60534 bytes bgfx/shaders/dx11/fs_gui.bin | Bin 42904 -> 42904 bytes bgfx/shaders/dx11/fs_ntsc_decode.bin | Bin 60511 -> 60554 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 57706 -> 57682 bytes bgfx/shaders/dx11/fs_prescale.bin | Bin 45438 -> 42904 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 -> 45892 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 43223 -> 43083 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_deconverge.bin | Bin 1017 -> 1101 bytes bgfx/shaders/dx9/fs_defocus.bin | Bin 1807 -> 1911 bytes bgfx/shaders/dx9/fs_distortion.bin | Bin 5447 -> 5499 bytes bgfx/shaders/dx9/fs_ntsc_decode.bin | Bin 8356 -> 8439 bytes bgfx/shaders/dx9/fs_post.bin | Bin 4835 -> 4835 bytes bgfx/shaders/dx9/fs_prescale.bin | Bin 1399 -> 617 bytes bgfx/shaders/dx9/vs_deconverge.bin | Bin 1799 -> 1871 bytes bgfx/shaders/dx9/vs_post.bin | Bin 1142 -> 894 bytes bgfx/shaders/gles/fs_deconverge.bin | Bin 424 -> 485 bytes bgfx/shaders/gles/fs_defocus.bin | Bin 1051 -> 1167 bytes bgfx/shaders/gles/fs_distortion.bin | Bin 5160 -> 5408 bytes bgfx/shaders/gles/fs_ntsc_decode.bin | Bin 6438 -> 6484 bytes bgfx/shaders/gles/fs_post.bin | Bin 3805 -> 3784 bytes bgfx/shaders/gles/fs_prescale.bin | Bin 719 -> 238 bytes bgfx/shaders/gles/vs_deconverge.bin | Bin 1409 -> 1470 bytes bgfx/shaders/gles/vs_post.bin | Bin 629 -> 419 bytes bgfx/shaders/glsl/fs_deconverge.bin | Bin 395 -> 450 bytes bgfx/shaders/glsl/fs_defocus.bin | Bin 1016 -> 1122 bytes bgfx/shaders/glsl/fs_distortion.bin | Bin 4921 -> 5164 bytes bgfx/shaders/glsl/fs_ntsc_decode.bin | Bin 6050 -> 6096 bytes bgfx/shaders/glsl/fs_post.bin | Bin 3603 -> 3582 bytes bgfx/shaders/glsl/fs_prescale.bin | Bin 646 -> 181 bytes bgfx/shaders/glsl/vs_deconverge.bin | Bin 1301 -> 1356 bytes bgfx/shaders/glsl/vs_post.bin | Bin 569 -> 377 bytes bgfx/shaders/metal/fs_deconverge.bin | Bin 997 -> 1117 bytes bgfx/shaders/metal/fs_defocus.bin | Bin 2291 -> 2355 bytes bgfx/shaders/metal/fs_distortion.bin | Bin 5557 -> 5764 bytes bgfx/shaders/metal/fs_ntsc_decode.bin | Bin 6849 -> 6943 bytes bgfx/shaders/metal/fs_post.bin | Bin 4384 -> 4351 bytes bgfx/shaders/metal/fs_prescale.bin | Bin 1111 -> 634 bytes bgfx/shaders/metal/vs_deconverge.bin | Bin 1547 -> 1612 bytes bgfx/shaders/metal/vs_post.bin | Bin 925 -> 757 bytes src/osd/modules/render/bgfx/chainentry.cpp | 11 +++++ src/osd/modules/render/bgfx/chainentry.h | 1 + .../render/bgfx/shaders/fs_deconverge.sc | 11 ++--- .../modules/render/bgfx/shaders/fs_defocus.sc | 3 +- .../render/bgfx/shaders/fs_distortion.sc | 41 +++++++++-------- .../render/bgfx/shaders/fs_ntsc_decode.sc | 3 +- .../modules/render/bgfx/shaders/fs_post.sc | 7 ++- .../render/bgfx/shaders/fs_prescale.sc | 2 +- .../render/bgfx/shaders/varying.def.sc | 1 + .../render/bgfx/shaders/vs_deconverge.sc | 9 ++-- .../modules/render/bgfx/shaders/vs_post.sc | 7 +-- src/osd/modules/render/drawbgfx.cpp | 42 ++++++++++++++---- src/osd/modules/render/drawbgfx.h | 1 + 83 files changed, 150 insertions(+), 123 deletions(-) diff --git a/bgfx/chains/default.json b/bgfx/chains/default.json index 1012d6eacd5..115e7072cb3 100644 --- a/bgfx/chains/default.json +++ b/bgfx/chains/default.json @@ -7,17 +7,10 @@ } ], "passes": [ - { "effect": "default/blit", - "name": "Copy To Unstretched Texture", - "input": [ - { "sampler": "s_tex", "texture": "screen" } - ], - "output": "temp" - }, { "effect": "default/blit", "name": "Final Upscale", "input": [ - { "sampler": "s_tex", "target": "temp" } + { "sampler": "s_tex", "texture": "screen" } ], "output": "output" } diff --git a/bgfx/chains/hlsl.json b/bgfx/chains/hlsl.json index eabf0664857..401e86e6800 100644 --- a/bgfx/chains/hlsl.json +++ b/bgfx/chains/hlsl.json @@ -87,9 +87,9 @@ { "type": "vec2", "name": "defocus", "text": "Defocus, ", "default": [ 15, 15 ], "max": [ 500, 500 ], "min": [ 0, 0 ], "step": 1, "scale": 0.1, "format": "%2.1f", "screen": "crt" }, - { "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": "color", "name": "phosphor", "text": "Phosphor Persistence, ", "default": [ 45, 45, 45 ], "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": 6, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "crt" }, + { "type": "float", "name": "scanline_alpha", "text": "Scanline Amount", "default": 60, "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" }, @@ -175,15 +175,6 @@ // passes (required): The list of individual shaders to invoke, and any dynamic input parameters they need. "passes": [ - { - // See the pass after this one for a verbose explanation of each parameter. - "effect": "hlsl/blit", - "name": "NTSC Blit to bilinear-able target", - "input": [ - { "sampler": "s_tex", "texture": "screen" } - ], - "output": "ntsc" - }, { // 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. @@ -261,7 +252,7 @@ // // option (optional): The name of any MAME option, which will have its value fetched and used as the name of a PNG to load from the artwork directory. // value: Any valid MAME INI option name. - { "sampler": "s_tex", "target": "ntsc" } + { "sampler": "s_tex", "texture": "screen" } ], // output (required): The target to use as the output for this pass. Can be one of the named targets in "targets", or "output" @@ -290,7 +281,8 @@ { "uniform": "u_jitter_amount", "parameter": "jitter" } ], "input": [ - { "sampler": "s_tex", "target": "ntsc" } + { "sampler": "s_tex", "target": "ntsc" }, + { "sampler": "s_screen", "texture": "screen" } ], "output": "guest" }, @@ -301,7 +293,7 @@ { "type": "slider", "condition": "notequal", "combine": "and", "name": "ntsc", "value": 0 } ], "input": [ - { "sampler": "s_tex", "target": "screen" } + { "sampler": "s_tex", "texture": "screen" } ], "output": "guest" }, @@ -444,8 +436,8 @@ { "uniform": "u_time", "parameter": "time" } ], "input": [ - { "sampler": "s_tex", "target": "internal" }, - { "sampler": "s_shadow", "option": "bgfx_shadow_mask" } + { "sampler": "s_tex", "target": "internal" }, + { "sampler": "s_shadow", "option": "bgfx_shadow_mask" } ], "output": "internal" }, diff --git a/bgfx/effects/default/blit.json b/bgfx/effects/default/blit.json index bbc9fd295d4..5f5ad148148 100644 --- a/bgfx/effects/default/blit.json +++ b/bgfx/effects/default/blit.json @@ -16,15 +16,15 @@ "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" + // 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" + // "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. diff --git a/bgfx/effects/hlsl/blit.json b/bgfx/effects/hlsl/blit.json index bbc9fd295d4..5f5ad148148 100644 --- a/bgfx/effects/hlsl/blit.json +++ b/bgfx/effects/hlsl/blit.json @@ -16,15 +16,15 @@ "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" + // 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" + // "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. diff --git a/bgfx/effects/hlsl/color.json b/bgfx/effects/hlsl/color.json index 5a033140233..d5a8d6ca405 100644 --- a/bgfx/effects/hlsl/color.json +++ b/bgfx/effects/hlsl/color.json @@ -8,10 +8,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/deconverge.json b/bgfx/effects/hlsl/deconverge.json index dafd2fb630e..322a916f47f 100644 --- a/bgfx/effects/hlsl/deconverge.json +++ b/bgfx/effects/hlsl/deconverge.json @@ -9,10 +9,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/defocus.json b/bgfx/effects/hlsl/defocus.json index 7ba4b2cec49..b01112de088 100644 --- a/bgfx/effects/hlsl/defocus.json +++ b/bgfx/effects/hlsl/defocus.json @@ -8,10 +8,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/distortion.json b/bgfx/effects/hlsl/distortion.json index e8bbac16095..5eb70fa93d1 100644 --- a/bgfx/effects/hlsl/distortion.json +++ b/bgfx/effects/hlsl/distortion.json @@ -9,10 +9,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/ntsc_decode.json b/bgfx/effects/hlsl/ntsc_decode.json index 208f35b0ff3..1195669f450 100644 --- a/bgfx/effects/hlsl/ntsc_decode.json +++ b/bgfx/effects/hlsl/ntsc_decode.json @@ -26,6 +26,7 @@ "fragment": "fs_ntsc_decode", "uniforms": [ { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "s_screen", "type": "int", "values": [ 1.0 ] }, { "name": "u_source_dims", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] }, { "name": "u_a_value", "type": "vec4", "values": [ 0.5, 0.5, 0.5, 0.5 ] }, { "name": "u_b_value", "type": "vec4", "values": [ 0.5, 0.5, 0.5, 0.5 ] }, diff --git a/bgfx/effects/hlsl/ntsc_encode.json b/bgfx/effects/hlsl/ntsc_encode.json index 8ff193398b2..1112a21c197 100644 --- a/bgfx/effects/hlsl/ntsc_encode.json +++ b/bgfx/effects/hlsl/ntsc_encode.json @@ -9,10 +9,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/phosphor.json b/bgfx/effects/hlsl/phosphor.json index aaa3c12f727..84ad77ad5ed 100644 --- a/bgfx/effects/hlsl/phosphor.json +++ b/bgfx/effects/hlsl/phosphor.json @@ -9,10 +9,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/post.json b/bgfx/effects/hlsl/post.json index c4a86da84e5..48530433f40 100644 --- a/bgfx/effects/hlsl/post.json +++ b/bgfx/effects/hlsl/post.json @@ -9,10 +9,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/hlsl/prescale.json b/bgfx/effects/hlsl/prescale.json index a636c4316e0..3026b424876 100644 --- a/bgfx/effects/hlsl/prescale.json +++ b/bgfx/effects/hlsl/prescale.json @@ -9,10 +9,10 @@ { "blend": { "equation": "add", - "srcColor": "1", - "dstColor": "0", - "srcAlpha": "1", - "dstAlpha": "0" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" }, "depth": { "function": "always" diff --git a/bgfx/effects/unfiltered/blit.json b/bgfx/effects/unfiltered/blit.json index bbc9fd295d4..5f5ad148148 100644 --- a/bgfx/effects/unfiltered/blit.json +++ b/bgfx/effects/unfiltered/blit.json @@ -16,15 +16,15 @@ "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" + // 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" + // "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. diff --git a/bgfx/shaders/dx11/fs_blit.bin b/bgfx/shaders/dx11/fs_blit.bin index cc7afc788ab49b8e05e07dcf3340eef02f77c256..0a2c7a979f6ee2fe4f6ad1cf1f468c6938784e29 100644 GIT binary patch delta 107 zcmbPno@vH;rU^0vv!tGcdXKIlgT3+l@Lo+!Fr}{|sYfU|{%mL#OqTX`t_t pWCoXOPTRXTZ{U98$m-UZ&gHv#q3?HJJPK!rF)@~JW}i2a696+mFH-;j diff --git a/bgfx/shaders/dx11/fs_color.bin b/bgfx/shaders/dx11/fs_color.bin index 5acea195472df634f7c0b4dfd2bb8fb97140b2df..86da7f9fde7e305a63eb0da617e2a2188a70b72c 100644 GIT binary patch delta 218 zcmezQkm=_`rU|VAIa5r#gz6_BTYG=2<9cTEf{jyCcqH;Ye}yqJFff$5>a94(C*U+K zIP18?g-w2&1$qB48%@k+U=V)D$l&mbk%3EjE%*4PTu-TA#8{_7$LL7FSKkPP7p3`}ek#Vviv;Jn&z&b9$0-%ylANd%> xMHvJb7?_y~CLf8O&SY?Ka%_wgklI`s)8K~3NsG&vn0jm{+b)&bym)CCHvkQCNelo0 delta 230 zcmezQkm=_`rU|VAt&X}6e=3!qbcz?VK9$ngw{dC;kHr7OKf@Rq7#MzZTdzI2DaxlM zBGt-u&0W>ag1mp2jhwTX7Lsh6NBP*puQuF45sUt z8Hzj^7?KthHe}w$xcRFPhaIPt?p7|}&WntUlMR{mH=735aS0{>m3;ch#~?1s zAi%)D%#<+sNc423f)kTtW2Au8=E|4`H#|;ST*f2>bSn__0PR*_U`SwKI3vAz=F$Xi E09D6JJpcdz diff --git a/bgfx/shaders/dx11/fs_deconverge.bin b/bgfx/shaders/dx11/fs_deconverge.bin index f8954f8ee4bf94b898ec7aa48fb929a43c107489..e85b211b5f790f98ef5a31ae1d81b55814afcbe0 100644 GIT binary patch delta 1864 zcmbVMT})h65S}^Qg}boC1+n~yblWVY?E+neG`O||DA@A13%e_RrU05_yTfPLPiNIxkFtu$f6~kqz+G%-thE@%Q^W4UlYfVR zvq2iiPNpXFD0asyufSfO`eJfOHJ+WkmD7!k$P-P_|T~O7VSqTy4$nX7`|AEHUGd{v{eo zEmPrDqgT7mYhBX{`kR0263T_QAAPECyf~c7sU3Z~U?6A=d6v_%KKoEX$6;>xlVA*Z zdqPy5%E_+sg?#a*#I8sr+E_(jw6tI^9Z!|=)6*Kj`{`V&5+9%|{H&sq@lA|>+!~`~ zo3273s-LbmX4~e`wZ-=%y+zN3W3H8|vEaOMJ{(Ymb21Ya8JCDyjrTW5?#|Z8AbV)V z)GSaM0uD2sA(~mBrhO zB{3DnXt+|q(oN!d-jsba?KttIKQpwXMh#Pud<3D|B^yv$psjO%e;`m zeTOh&S@Zt-o_%R1TaZruz`kWc`f-7M%bEp9Tnb?eQvA2sIYZ9rmpP zdl^__f@QhJO2~qM!*1hhEB}LU^JJe0H@Ki``l%~GzjS#FZ+8dMoH{|tgclp>`9!yC zBVcX@EhO^kVxj~yj9ZDv_!{fEzWx8)OY3{L__q39+Sk|rZ2t?vhcaKz6hp9-B`ohiAegWYo0PSzIIQr2|(WTqdRsp8!u_XXION-J1fS=(6K ZStG1rF7${op}s=nzYiJx*6h3!$5_dPdxGiaS7ed`=`bc*T6Dc9BuT5=D>b|m%q#;cyB0>t{idM;w zN(NDAAt1>KrBH=dOuIj-Cd@A%l@#-%YLyfMNfnVu(Y~OfRFuZn?`&u6R8sHq%{TWu zXTCY--o0~jQM)j!4L@D%(tk+I&nc>TWzW9nhYUresH?KAZ|hUxqdhNp{zG3 zgk022b>vMRb?Q-4}h`gPoUbv<(Hi@$m$W$%NT zx${fyxl>=7$t&-N4p}pStDd@d&uG;BmZEu0S)YdbxA5oO$(zO>QU=eaT2w3F!u1hu zNw4#?wiw)#F7mHh)_?Qb&1+(Mbu%BF=&*iIpHkk_otOQYgXa|Ij~IM08>=~~jx?98 zU@opj_sim9oViU^*3s4==kuxDAXH_?R#W#1>?n3hCr6iEb9Apum)&yoz#W~hNF5Trx4ZK(g^LQcgfa4rE zxjHv-u++KR@k3HIOS{JkiSF*k>&ka`6M(*sGAj;%V?0%gs6qa!)T>6gu_wG{S{57& zcOUsw@bOwL(A4B5pEvlJGDiYU{B5ZamBXN@9oO3h$?=gznB>zi7?SP2%V5AUn6V9J zkg=S>3_sf&_Fb$->nXzdozdY--@KXq!(cbMBuQq6hHZ6>1DIg7GfebHd MZ>zjDRq<&509nv7G5`Po diff --git a/bgfx/shaders/dx11/fs_defocus.bin b/bgfx/shaders/dx11/fs_defocus.bin index f342c80f26b6b4e4b618c6bf3d4a31cd3c9da541..894cc151994be174cd1b6bc7bdfde33e5e925f5d 100644 GIT binary patch delta 2669 zcmc&$T})I*6h3qJhuvjie*~ep=#p-0DhRjKSQHQG>qn1uI9bocc(YD^O|y`n*p|q0A^G&%1M-~ zD0hcrUpO)mEys?PaX)Kd7JisrDqR3Km=LT?b>lOksgEs*#w2{9F`;R!5WuO<<1b4E z{lrx%yu6n10&NNX6o6eY%s4bAgUw1z=-!cB2%tv%jHXTTzp}L)Rx;n%9Gvx;9?bCIUsca0F7T zlr$pLdLnWrh{y>M5w_Kx(Bxymuldk6hSixE<5T7$`v_TMYgRnTKQLv+nk=#FO5FN8 zzB|n3%=h;D@BDpfn-oe`dUw)6nK?bi*p`BaFv0T8Z zX^o|u+q(|-^z4h~NBpJ!#rIr)RL+kSJ7Qg}l|7MIFwz%km0K50cxPR&{oee&d176q z%-7v#wo81Jj~uzec#ccv?o(#Iq26b?IaW71qSV&sN}h8rw8b_-yNWb_yD`ir_)m=) z4^5b8`>lpu9tIY$;Rn@*eTFukPzKsO7OKMMiy^X1Tfy>U)p9aai#C3pjala{JG>M9 z><{Z1B?IGVm>AE8_j~eTn}?Rx23lo!j%6J`)?~|aqR$hU2ZNWuiCmAuGoB&TyUaYV z>C;Cj5nN{+GQ*n)GYF_=6728@)9d_3lafLfbYiF${GC0ue6HE1qW@@U39sE-#=Xt5 z^gz&Gh|3PRv|8VW+- zL?e=+16c%DuETXn7Cu0hW39`x6g0*x+mgAjZFz~`#bbe%+E`+N8%r#3DsdT?BC_-+$BNuoHFYf4;&bs)Sj^$3B>Ngr#=2YNDrvfkGyQ53LD_QmA10Vk&+QI_- z&*+*0&qpmCUBgo~@7F~OzWt*TkJts=Z4?+ahClibK#j^ftyJvmW&N+9quUGyG_4*Z zx3Evg32Hc(&;y!=%h>-F$2AQ%wZ5j|uGZHyq#@-T+G`qv$cGfzh`I>Yz?1w==h((< zM0|(@!3z~S9l-v>*k7WR&th8`mn}AB=D8g#7e+D7xC1iNQ}AfSfTdK(NT*}cBrT4) zXpCR^ydEbODl^YtD}KP6Mw$I2j#t%bnJAp zE4Bd)putEfKxh?rPp(Z5WA_P^CY0SM>rt${YVt6v<6lpn%BDDzP-t5}i&Br$fD%G! Q#C&3Gj}pJYtdbx81rVaKrB^`Q_Yu z{{HUCx$nba>4(G8i*D!GrRKn+>s~o84PCvm>B^M##IdTPzF7tUW0wGAk}kq1;VU6u zik~&jN&sFuqySasXEF}5Ip+XaNd?ft|CHn>mQioxq#z%hVbwUom*cOj`G3T!=#kn) ztVf?)6chFTrLJ&+^#IBu@#Sci*HzvrgJ22xnOxo}HtxUNLFihFtsuHo4`4Wyy?cW- zqa%OQqMGePVMcNQVa={m}z;j-JF*0|ULW+JSh_YIRMmYZcCI-H%Cw#dK@o)`F;( z*NDr`HEM^pU1Z9z{D!IR`7ap5eFi5!)26Eh;=&VD54a;JZ=vdCGiFRs2J&{6k)59(>Tx=6{($((mOEn zn(*nUV6+g;FdCtG&oFwZr=P!O#vNBcsp zUa(U-(QOWSaD(<@HpBp1ndkM>XUwkazUk5N?#cPuGJr+WAE9z$G5W-hOsqP>vzjx$ zpWXKyseWXT%t|HH0DUD{P4&A0zr8rYsljR#`KT*4e{qsL! z(#31UHC2Fay5-X1pn#fvx(>24XvFd9>f-C-Wu_aWW+U+1X*;pdexDAp_4SPaNpd*u zA*&7GaoQIU90VVAR?Pls0%e2%;eJApu$53l$RpI@$qxpx`21+4kxmZ~wh^8nv=cfA Ve!B8*7Sft#eluvknLN%__ybJdVVwW~ diff --git a/bgfx/shaders/dx11/fs_distortion.bin b/bgfx/shaders/dx11/fs_distortion.bin index 0ee1150c722e697f1aec07d6e2f02821c8a2e5a1..13e60b64c3464e167b58334093ec055eeede46f2 100644 GIT binary patch delta 7293 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 F{~J2HDC7VD delta 7705 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 X-Bz$@4dH+ydc1>ZbnMxQH=_Rsy<1Kp diff --git a/bgfx/shaders/dx11/fs_gui.bin b/bgfx/shaders/dx11/fs_gui.bin index 54a4ed300e39e1370d7769737e865ea0a696022e..207238153b0bbd69e5946dfb557aac7bdc17776b 100644 GIT binary patch delta 116 zcmbPno@vH;rU^0vzPsHPehM*pJd^RaO~>5l6E^DPa7z?;{t9DcU|^Ut$@D?cdJ%_N z4Zd^lUYroHc?0(wN7iXMzbDVxywI1`XYvC^uFV@}zF@?oV|Ex5qxEL?c@sGS&-gOg delta 123 zcmbPno@vH;rU^0vDp%HV_{R3y7YHbKdOuicwNWRBTY}-p&oD*?1_rLPN{g#yW&L}e zx3XECllR-af%}akt791tx9{eKzN|i6)?7eU3=S}1U E0E_u6IRF3v diff --git a/bgfx/shaders/dx11/fs_ntsc_decode.bin b/bgfx/shaders/dx11/fs_ntsc_decode.bin index 7f6d8167939eb483fc85aac7c78de54822d992ca..a63dd82f051a43a7b43882ff25bd41f7f5f91c4f 100644 GIT binary patch delta 4139 zcmchae{56N701tgcEHX|>VyQxG%F5GfVLSp)2e2St*MjMq0luGp+ut^L3K*H1W5CP zBoJbwx+tS93LK=S8m##v)A*z6n7pph6m{7&v}$d)Ov|Peq2aEfWgQxUrBc*ouQLt8-W9(;dyt`+~-h zq4s~&Hil{*>iW3y@weS?Ec?ahV}81rV~7wTa)Lp$QM75a7XFI)iF?pPR1LM7ubNfm z-yw2PlNWsvH5Q|!-HSV-?b~l_!-dusw`ACvi56>>$30_fqJ4=Yh3}fgPVX|y#1gx` zH*jC*be8Vl{P~lT5_;>kI;1O`+qcC`caU7&{CRn%yp(UocL8s$TI!xY~6xu zeXGykFJF^99(fNds6O9N4!JPJ{TyrcA!oQXjB7F@v+#~gZ<}PUYul3UEs&Apw0nE0 z?TO8)XCY`m%fhqlD0Jo+#J9(wzAGc&WA|3J_X(5auDxN?$m90axi4&bdF#F!Gt5J{ zj`0+nB$w?yHmNp0;x~VJXbQ>FzB^J6AZ+SHwT+4du?+Ij@^p;v;>9oYPm3w&sa{3hTkX zP_B20d_AuNyGH)O75qw{H*L8LKLYEwebxR7%^J#>UU?lA960DpM~5?_GWiu;e=zJH zvumF+lNnK|9piJTO+{rFmA_E0WJXkKYq|Q6FCD#-5tZ6nZa))7LLT%EnP2MqNyeibD zqS-@Ea^P^-J?NI_Hqg+?0j!0?1!-fLgK*wF9CDA^DaB@zhu{bPRhB$^>F??5b|HNbCQ((MlW(O>Pttn-{?hdiq=$mzaYcxHQtQ5lbMa# zzRRTc+SJ}M%Tv)Be=$x+oU5q0{ida=nu9T)Y2mt91@`0a*pp_2--|uu3VI63Q+1?) z55?+t2kkB9B`l5G#c~Xf+ke?5bS}e}PE-ERGJM%5QvO(mFRy)^$B&doBcH8V+Yu>0 zc30!kfyzs}_7dGdUJz3yANjXHj(GX}8m$bz91b|IV@eu<{wK7OCR8i!RdF5hBz%y( zXg8p3MjA>N#5CCQugLMy2jIu{y@$_+)-P*PmA zl15c4X-u_}##Jk6TD6j9pgnk?lIEe8LC-s)_6-HFrt)AYsZO<$T2w3Tvq!#>oIxNB zFEXaI*IYj0vi3llUSv#33(y6KF9a8FNRE)@FqE`awUQ#LBRm}65tY5!k8CA1s8&*& zY9$S-R+8+%D^ahcq-rJ2t5#AW_EpJOMoBj5yJ0A)O|_EZs+BaNT1m1Mm!MurS5+&i z5Id^Gl_b0K7oiu4m)4|)l6qAu>6B_E{YJHtWK+He9V*F%KWx!T3aD1nCe=2%?PyI@ zcGK0UP+~v`lWA{<)|tDf(F`IUQ;J>uq4aZw&z?0(kmjAT#Z(#xe)|F@q+?|S&m zpFBl480-%QL)B;lXwJm$oJgF=yBANmSYQ=Aj=mN@xA0l%-f$g{ zPnz&*`gZF+|Fre?(ORCXvUM?G$p6jSDOFzLpIU# zx1ePP`Rq(Ne!KjBX4O)IRYEk#b2DqrV4~#mPV?23by$TkTf;V!Z delta 4327 zcmZ`+e{2-T8U1GOT+YV0M>ujexHS%La2hu_jarCm2{%W*KI{lfkU$#$VKtN-^${HN z!_c_7L%7r_xN+aN z{>E(A>YirbzW2?(n{Q@!X7;Cl3H)s+kYBf{KBx{&e7NXX{`Bh2SJrR6FBXj7pBsDS zo`+saUR$}~t;SP|h&Ep#3IeN9dQpZ@8g)#)o}Vlvss&rFZ>X~Tt;ML;7ADf`tcHBZ zL@i*Bw#o{voO05a|EQe9;YAis*KrjI28(Cj`RqadkBd7xetgHa@2o%b_g7yz6FF7k zyi`0L`1-L{q9q?Hs=chJ;42pOT(#)i6^aJQqVm&@_Y5jyZt}w&vTsjep~3gT~x2~Kfn6JLhvFRs?_ zCd%{d_QdHrXFPGArCRjr)`oZsDk~~Pl0>&s(_%$=$S_Do=T0$t$fJimdLirjomP9! z4P7#Km)9-g(Yeq0N=}m8DJUV*@_3pi~l7#EFnKGUz zyCro0-soKPgeN+i-OS!tJm=n9IqzPh_j>N)mKfddmeWV}#Z*Z5?~9g%@;JMxp#R>G zp4k^gooGixyvwcA89e9l=QbNX>(TjtjefzSa~56twGKO;aov7T1D+_m8GX>BvzyU* z`ZCWOyJhsZ_S^A3*R4k7JW+Nt`lv@|H=|$j=~e+RcA*X>v8nkUL`MxXTP>}K>S zkIrsG`r!lihDp~g96$%pwVd6I9`xw!X7rFpXSc~bJ$|4r9{vIkRXE^(5RLAC5RLAC z5X1V3AKLLA*R5Ikhr#InVKBOX7<%-=C+v9T0&d$0%6U41Q#HDO7>w>8hD!ZQxSbR? z|1cQcKMY3q55q})XQv%64RPC&^D;HMKU1UoGcDC;;FfjWa`Q4Zx<6B+`!mhzh9BAS zB-UF+o5??>M)!}Y(fwnZ)WdM=cHN5SWomSPrbhQ?+O1okwBx<5+w{CljqcCX=>AN5 z^$ob4bKP?DGBvtCQ=|JcJ*SVPV%B7V9!T9s&yEhQ0mRXK{)_hxZ-O0WL_*;Mc(g zsS|t>T#$Oe{|zokS@0X+f;0~PA8IS#K1?f%U zf;0#oKwOZfgbNan(iagIq)PC7aA1lr+>Hne^|JwYE5SS=yjyM%q#ogdlo2jSeZmFl z0{BAs3DO97A^1ojNS(q3iJ!bM;)2vCT+m(r z7bBjlMF1DXi~TJS1gToMAk_;ObQkg^sNbcXt}UsxSTTyh1gS~5ASHzh60aB~s4qxa z;es?GT#%-O3%YB^GThH=1u#WTvlnSWN(dLEF5!a2%ffOP2-1LXL7EaSNIdbEqP`%l z7e0#^#AXo$X}@qmIw4$;c<%oa3*Mxoq>I|PXe zX1O4h3KyhW@Rg`9NX^0pDGgqMI3vF!J;DVk1C9^4LyWic81#w22!V!#GcunP&bSIZ zj5(MM7@1cIXJlS4oRK-t=v<$%5dkP_f`feT`4UP}>L1FWMeXG?ck0N+O)N7m_V@qj*j^z7m`m`r?9 zMA4-b<{7F@Kk)R=t>3ikkDp!!a0;F&UwiYT_Rob&pTs=K2j)bo z%SsmFdYSX;(5TAWk5H}F7dPpTFBUsR!}UrZ7>VkgBeipgfAQ1BtH0UmUyq>0Eu{T3VlB+pZ6Wec2>WW(Fixp6;_fJA}kuP{ai28LHtKb&%?oZ&c= zr`9WM=IM8v9}E0oHge8lV&Hwu%)lAU$iSt_#31mWfx%IQk)hv}kwI}gBg3x@W`>PN z85kOlFfr8L0-7VRnUQ@LbG$FwRCI*I2ANd%> zMHvJb7?_z7Cf8+8mkaO)iE=SWi1GqOfu=AaR0Mc$HqM#hg~y%S!k8E}CtK~*pDeqR KXLIS!Fm3=gMNRJj delta 241 zcmX@z$$Yw#dBS=D&N+x#-`s!>EzHvW~fCR&lpJ9v)3=9`DH;OKox$fEF zA`sQjpd7UMvA_>zqf_Y&3@-c{u zG6*m*Ff#>AuFIY-Col&j%Ecfd$_o?)n!A*G*=naglYHFf I?41eR09ffo5C8xG diff --git a/bgfx/shaders/dx11/fs_phosphor.bin b/bgfx/shaders/dx11/fs_phosphor.bin index eb9b15d3274a26579b1fd08f26b74ae2bf2be85b..96ed99bf58f70de673c9ab5ae493a2f212ab677e 100644 GIT binary patch delta 225 zcmZpB$kg_bX@Z}C!htV3*G`ySZQ$DF*7t5!)5bUr9*I29Utx?43=BKuB(^oAaXah` zjOjDckbSp#9?u_UcIPZ62HwZalNSm|@*mA%WH4RF%+Srq$dI&{X>!8?kL|&-02&5+f=v)N`h6DzN)QZh&OB1*Oy(~z| delta 213 zcmZpB$kg_bX@Z{sTZiQAh`7QVot|0;f6l)pu`y1AN8;b%pJ9v)3=GfbES*>vui@Hv zyEB(};?Xag=kfeuW}leNz##mPaq>a|N&fp!7#K{~F*B^}U}Q*I%rv=Sfym|yOiLLz zHwkgrv1TUQa`|rV57@{hSir=<@aZETgSaSz00RRvQ^DlG=;=%Xe<#0+mI6|n*<$)! txH3zCmNIBsE7WeDx8MaM9(ODXV`8+Q{B?;u)BNhmr3$g7>3_-XQrLbKsUP3QfVm_yIBe)NLT`GNf&5o6G$Z}h9w0;3tcFpNSRTQ zMKKc3A5BOAgZQJB#j6Qw6eLwi009XCf))}qK!`vk!3C-Bx$|Ap5aUVCJm>wk^WAgr z+bp3wX(5 z&fT2nIXhy2>e-dEnz{CH`Z?=4%`iE}W=0(6v(75=W9-Hs7Y!^LXlFfGoF0$eYTZz! zV-fG@ig1<_7Rz6EZQ?khAI7+`@sXS{?59jm4W!O6VNU@uZseXoyt93UWTf~a8H@=Y z5t|zmwIR!-V-RP<%lf`|c-pT_H=DB=XLEBUPAOgDEATmqda-Ykvh)sLfwJslzGJF1 zQR=1(1H!TF%k@p9%?vdSIQzo&DQ?UJUP-n-7oDj;@(g)i0be%CBe%gdngqA7Yhwe>=4niDeXh;f zK<|i2O?J=A+(_4(uS0=U{bkIwK)ck~=+XW_wl6A%CH3gQp+wiwz{kgojh?rI>Anif z_%nkg{)tR9CGB~^_`uMW)qgb@m1nJeKkxTpwYy)xQu6t%k>A;`B;WL8{`{Ll{cH5k z22y_U;QDO~A7)!9tpm!lE&XO%UU2z%h3CHoCj12ZtF*dldd$4f><9DCM8%gaT-8|K z(%jNsv@mZ{pfh0a3Vy0$9^86x%j|g2Zdu%~{J#11di$2sO7BW8)_WSWd~M;b*h>3Y zV}Yf1+V_@rDLZO;l~P%{u4$Oc(M|l#)tj15Sa&_Tp}C%p51Q*}y4PGu_tX_LX?bHs z9e*#bcvqd$t5?of8}yl#o75crOiS0O6x1j1-1*n>;xPMA$VCQeVOGL>s7=_+^~XUw zskK5?XL0Sudl`S6jVnw?&Lj4CK1vFgF)-e|mt1>}?r%@l2iwN8&s%M&s?d&ZZ&IpR zuUfUHbYPO%glFtDHE2p?BWAVv9`}VB; z=7R26T@eae2p?t=iE9yth4Au(ej&Ds7Gl3>p*gXTlVFaH ziMS~NLg$D~L332bKRLp%5OYNf(IHxh&7y_q7A?eaD+DBRgX46N&hZYRHpfh2sK;Sg zh#Kl7`h{3VolGr6Gj$5J5Zgry(L68U(59|b`7 zc8*Y9t=3OUXr=7C6N}Vj4)dk@Y}37lXGVz2G=TpFxQpjsU&;bxgTTx1p~69EC2ui delta 2800 zcmb7`eN2^A9LK-sUM}1hg?kAE0p$USP)tN^m8kiGr~`qe!?#M!oQTMa;7cLhTQgtE zDR!K*)r!^TTH>@lwb`a4m8M%ZdqbUV;Yyo2H_^G4TV>yK@9#17kG9Ts_&nd=+xb1` zT+ie8$KBVCyS-&|X2w-b-#hD5?a@wnE)3oG=KdcK-r4*@;Odw@1z>j{ z5J!&YJi^(}x!niMnlqzv6Q7OG%UR25hRJb9pMWH?Rh|uu-T0FdfLDw`hC7E3E>1Ti zjKc((VG@je0POj$Ybtyk!Kg2OlSM0#$mu+rIF1A-W?!PjrUaukirHr}^G%$ZY(fEl z#ER1Vc@pqBx$zR`)c8FRt+mhu1zr@V6BPfNW%Ai1P$P|*=cm}r7-_gnxW^M~fQ{et z{pM$Jo#`p`L@VlYPl-}`i>FX2+xC2|ro1l68M3fnIEEcNzVWn~Vcx8F!_|pKn_XlR z-eldKke%bayOZs_yC)Xq%hh)ihAqgI+Rj?0-qFl6&zQ9yu3&sWCC!@b#LnhnI5GH^ zyDPQEv4>pU=FQeWC!~k{T#v(hU+0l2G?;E<=Mpii`5nJg-FYLYZ~g|OTkNdptmd!? z@I36}Zj4B93g0UzZ4PF_13taTSLlgG>9>4~{J+SS#wY52U#_Rd{JwOWzq{CR)bMc4 zh^NO4^NU);Bs0v>nm62&V6qYdW4+G1+EW8TfBN4i?$j9nft#g&9$wZxb^nbg+N@t2 z8tl5%>+bBV9SYTND0K7!gD$&qwcmvUxi0inxUe%HdhOuh$w#-juJBfPA0DCP}l9g75i1{7)%N&?tu^M7Pl_nu&l9h%}d41&(;f9rlA*F?rYee=t5=aL(C3s!C?68%DqGv`h%#9YxrETK-OUx@9Zg*YTy2<}HXnqW4DiMTES!swQmf@W)s z-)w@>Ld+K}M5|~awu%;_OSBNDU18u67CcP{3A33g)Iy}YV_Jv`>QwrLsHGl6Ekr$a z8nqDbi58-VI)i>8&WFWtK1Tc@T8IJs0%kHnh>_GosD-Ge9!f35CecE4QfJdI#3|82 zgfEFf2rqAJiwQy$h!$cdbq@VP)Qc8kD>d(qh!9<(h3KIkM!ztOOJWcrELVYCpVMGK=B$z!G=+DSB# z1=K=xP>-M%;*jVl!%XO*p^yPWTof(DZP7wlUSK5Sg_uD7IJFQG~K$Hh_qDW zb-Nh!2^mR%XnpZLGN78(3n3@`Dw`@uax6Q}tO zM28;MbJwo?D%tP1+Kpjp>sZUKJ9EYTA78s4X1bF42gdSyc+3hD^s(OTzgm7Z;e&;TU6MtfK|jjD1n*Otq|YwzVuK zV}6O_C#JWW8Q2&R-E;{7u0Mb#NMb@v{K4=Ok`M)A2#Ha`j0;h-`ng>nK9co6@VRv$=_^YZ_nRkWPQCi7E0DIB1Uh{GO~s*k?Sc zKH>617L!I;d&EiYdnSgh4u#zpqt-vM*DRKjft`QtlO}&VJF6x_cf2RQ-tlfkq+7*D zuKTL(r;tL&@2LDkPvr+EUKW?sAdanc7Te+j;r{5*LGF$hjAZwEe}fsTn+S*A z2!xWM$Y#gGx}>39RuLXZ?8C`rb%R6ESC&%8AT(dliY5SJ56$aG2ngRRF;r&*zB~xBsV)PG07itx_fVVxu4&Dz8n*EjPVw@ z#dTJms@}kIPv=i-l(i}N)Bh_#a6}4eG`sZnG!0&kAO8DHh0|=zADb;#QY7kUTUc-q zChb4~mU3yEi4KGIZ6fMKEj42=|9mY_hvIn>bUz@2v;*q^AFvZx1IXI10;>7d&tK&& dUyQA?fs?0NfL34^up4MY%8s%QF*>Iz{{o3#$sqs$ delta 3272 zcmeHJ>u*#=6hCu!x7}_ZZVQD16}C{Zl!r^Hiaey)wG>L9TON&I+msbnO1HLKXo$%! zsL_Z)=`Bf3Lxc)OzF_fw@PP?YVkBasL_Z+DfFQvS1}!9rhOWPJJF~qD#lOHw&i&1K z%x~tLnLGFPeXR{&(jsO4a=Un8=%S6%yBa$~T^%if#!bO(omoUAD7C9G9O!QB4DJkg zv&apLqmwOO!QLguee0hnz0`Kh-BEtxchB6iV}l2G{0$d8M0TJTau{+BQfwny>0eRR ziaxsJgw*V7=$}-t5tTsM4{5--vb`Skh_rpTS422+A%crAJGU~on-EWBQ4gzTn@r^R zO!|}TBXP@Ni;s~$1iMt+I~gN!T8T-a9w*T`nL(7oW06TDJ`ty7ofJVP8QZlIJVx6x zbeHi$*oT(NlX4%EMwbKcHKtf5$_ZX^@d6`eCq8HaQL=^1B;tv90Gjj8?5qzg5?u>p?RaiMNE90fTwdubagQJ(Ukk>uTqyNX1G1mgd%gepck^2mN-uJq~#7biv(17T09b;zckPm4s`f}IG}AUToex%Ww|2z#w7dhE;40jveBZ{1vUpm zZFS9Un*;hT|BS~KOF5FkSBccYP$?;UE?7plN4+0d%v4^CU(vX6n+nQDaAIYZohvhw zDl=aJmh#`BVk@lqtK@ zV&_viF z{}H-G;w}3DxWyaB_{Fi50a*jSfHT<~9@OQbDQmq;&4T_PQp zxW zG~j&fq8IoeJTpz4VB$uaN|n&#IET`uA&oY`F&D%+CXS;yz{QkB4@q34pIDQZJs#EK z#)w}Tj3SB}XT>QoKlRJ`f=zscG9f;!-9@n&ABkAZ#vbxX;p4Dc|9o9nW;?PQ`ZI$j zX7f0k)~;8q|H$E@oNUr>uisABz0%>^}H?QxkOM59-CYFfR9 z8(^~W;r`2FRsq~OsP0A}wjwUsvj3RGUAh<;hi~e1J@w5A@Ao|?bX$Wzoo^|=d-5S( zY_K8p-u?}x)2TKSf34=_#@os*;a?l!Q!O#>cuZLRdxNZ5V6H4zEQV+^z!*GmRs6?~ z(pz4wfNuiN$OXW|%%)Ka)yS{>IV36gVsQ@Sr;P^3V*0{?TvWzbJFrUB^3Pf|q+T-I zT!aIReig6;$8t6LoI6*K-?%xzgAhKywUD`xI!Fa%CL~F}_4ZcBO7vFg&4>5o%|?&M lBtzywn6DC21*w5lV}o86e&f)Qo5C18a&_c^@-Nan^e@B=Wf)=;g-nr{1wK?z`)RCv#%^`ahdCs z1WCI*I2ANd%>MHvJb a7?_z7HhYKpy5ccxb{G?5-DdWA6FC8Ki#PiK delta 143 zcmbPno@vH;rU^0vE1uFIcM6d0g+KoCn+!Fr|{|sYfU|{&j{QhQ`;sx*N z%kN)*=czM$^9Jr8%Yxsn@8*TRGdTncm>3v7edJ>h7iAD& bU|?n{*z6tV>x##)*asekwax diff --git a/bgfx/shaders/dx11/vs_blit.bin b/bgfx/shaders/dx11/vs_blit.bin index 346eae89602ebf58ecc142f1bb78ff2a89fbea14..dbdd427c13963810ae5ca2218609b02b2670137a 100644 GIT binary patch delta 153 zcmX?of$8)GrU{AyYq*ZSv+md>VvytW&g%S!zZ(rjcqDQ?e}yqJFfbI)XJD>+Am-BZ z+4o4xoS1u?V|m^2)vH=GYl881d+s6~?5r5NH+xU?cjqbKn9*JDfUtx?43=H+N_pWKT`QSZw z`@*#ojT?V&j^%md$eQ?EXVRR_etxW8?57fdsu&73N6mQ6h)36~FeW8EkV-hnP0Y+= Y$ji@51&ZkI()-BBa4KQ*)j4I{0Fx9sb^rhX delta 149 zcmX?of$8)GrU{AyYzx!;w$wosF9*Mt)e}*wKFfbTRN}t`7ILoo? z-v0GAyw4;z$MU>!Wc|l!#Ob@)&yUq>@&qQX&9O6HFyhfMD~w6W0%#TjU?cj2i@l`Jm$f%wS~T@(%AG(-lPKxTrT^LF2MKWXAgPJZ|N z&Y%1LympOGUgMsfsTOUjYV5?2=ks;l=i(iYHL||1zB}?3eOmbrC7}eDJpw2~JT1or#FL-+4^bTa^E}0nIJ^%B z6i+cE#G{rjBoIL&9pH0`S++7?Lwgg>_=PCtJ$e`VFNgs?VAKHU8%)1lui1|%(%KSH z;TktCNY>qF+68sdsjU`VYc(jI$~X7Ud)(rC*J{zPwT3B&JWfs?jWxf$Q@3W#Y9-## zp)GSeX;=N9th-%5H`kI|b$)HE>f4J}xacb5)uwoK$$IgbpQhV0CXRW8S+r?%tqP?rN}n zsS5TV^NESzM}?(7M_4bWJn-^uUB|e;Z21vU*xmATyd;fbnrC_ zU#0L>3h!5V=YVJf0fl!Ci1?7ghwM7pq(P3QiesrV0ksL|gpjsxfZ~-?b2)%cg^e0dAr1tZW(#-xU3Ol9i~Z zk*76XWzZ`T&PrP%T#~j#xP$g}jF$*LtUopYaJ1hWkH%9i@$GoSBBtMOts471 z&ucbNm|0|c8AdlAktGnp$Xx+0&*6+BD^_2Ou5x#u!{7Al?01p*wXkCXFn k6dGwRYclsZTQ-6zDOCI9kbec|??s%(&pc~Ye(+QNKUuM2V*mgE delta 1673 zcmah}YiLwQ6h1S1H`xtQcVk@EJnEvs1dL{_X(f$yErBHvUXq!e&rKv#?!K&x%&UNRH^ekt;Ip2BA znVCED^MLFakgkT>O5;}H@4szzT`UU4!j12L(06=f*2&GWb7enl+I!~n1GxeKLNNe? zFi5(GG)!c0>(jQ#PBNUNE>e?}g%cd{5x^+I4mDkBejKjN$N;X@EpTp^XW9; zc#dIVp434J=#t~z{p5I$Dxbw^vJFqkC{8poafxG(_w9fuo>gH6I1!xKY2;(6QSH5? zJSowHCk027=Ymm<-x!{esT5lQo_MzvU==uhY5xB%KWpI5&Tm}T6kc$9UhJLYLzB;^ zN~>YiUjnyz{np>Udm`gX6F~KS2drur@D+9L{Kcvs{iDRqbw{k2Z+!?KbZ){}O$qjO zeTHVIfjhcNaQTie@K{YLn)?iE%lyLvP3M z8?j^fOXMCT^<13nK^AL#K;!M29G|E0d0Kpd#usROVUmx?Le1exI;6c|o*+}>?FBRM z*Lc5HCr9IRG@dV=yjA)=o*%4WkQ@0*?u~3I4u30@^ox zm)DE`cK>=MUtIWbEx<7GUF;+g^y4cA5z+u@2RXR2egURJ*spAba820?;UU?B6t6Ho z^8nf00U;D7&{PO@%2o(bvLl?p15W5w0Se&;+4sn=5De;=ZG}**Y=zKF_I>gzgm0Ct z5Y8xDA>5IW7GD7kU=Wu!Pr&WX`{|-qVrh#2P&4@?WtS}}eeUM5x$W6@5W5~!WVKZ|&gr|^&yUrM-8TcMih*Tw)Qs1Rcy!GQV^Ycnsf2^v#LPT~ Yy!^aWpos1+y^o9xJ{g;@&MD&t0Gy~czyJUM diff --git a/bgfx/shaders/dx11/vs_distortion.bin b/bgfx/shaders/dx11/vs_distortion.bin index 73b8e5190e1950bad731aa6275b8e3a79dd97028..cb7e87ac0a8a3334e0781d375031c9abe1fdbfc5 100644 GIT binary patch delta 148 zcmX?of$8)GrU{Ay_Ph#Q3UlvuFYNj!ee9B3@X$MU>!WSzf;oy&K#pC7l^{|C1i;adNJQBH{zrq+97#N`%pksu&73N6mQ6h)36~FeW8EkV-hnP0Y+= Y$ji@51&ZkI()-BB@Kk*B)j4I{0NqwOB>(^b delta 149 zcmX?of$8)GrU{Ay3+4yNt>b*6Vew3D+6A4Aw2g)$JQ9Bo{|sYfU|?WmyQki^E7fhq z;xi5nbw}oHj^%md$jV~v!0Ef$&yUq>@&qQX&9O6HFyhfMD~w601ZWllU?cj!WKC&)Icd&jKR;G4_I3}TDu#m1Q8QjM;?XrLj7g~yq!JEt6EpJ| Y^78Xifg-xQ^gc2&w0ms6I;V^q0RJvJ0ssI2 delta 153 zcmX?of$8)GrU{Ayj4D-uQmQ493r}ika;CH-Z8Q|&k@$D`XBZ;`14E?rx|NGRZ1$b_ zV#=d+|8<=<$MU>!WPN$!1E=q1KR;G4_BS>_RSaI6qh`Ej#G`9g7?YAUNF^NPCT8X_ W3sy*w)yIuGHw7pnmBs^ diff --git a/bgfx/shaders/dx11/vs_ntsc_encode.bin b/bgfx/shaders/dx11/vs_ntsc_encode.bin index bbcbf4ede893755ac58c8cc13595d8e0b70104a1..0b269c0314f85b15eba314e9cf6f5bd2654c0f1b 100644 GIT binary patch delta 153 zcmX?of$8)GrU{Ayx7crM&(qNqQ2CHH+mo?p;zmOe9*JDfUtx?43=9_qp7s8zY;o?> zs$P9l&1J>rSe`eItnatSPnxsY&yUrMy(k!{ilJb0)Qs1Rcy!GQV^XRDsf2^v#LPT~ Yy!^aWpos1+y^o9xMZue|&MD&t0HmWfqyPW_ delta 153 zcmX?of$8)GrU{AyRff_oD=#h5wvM=-B>3MtZ=<0IkHp`@Kf@Rq7#R8@mqo`bee>$P zoh^8@D|GJWSe`eItSQ&hIDI$!`LTMjTSfy_F?el`n(>+ukFHr^OiFDam2i-on3>0r Vm!Fpk6w%$K_Yq{<=BsncxB;(_HM{@- diff --git a/bgfx/shaders/dx11/vs_phosphor.bin b/bgfx/shaders/dx11/vs_phosphor.bin index 07edbef7bad21f03ef7db67232e3bc7409f92236..4d5113f78cff31e17e5f8cf222554f7a4e01c9dd 100644 GIT binary patch delta 153 zcmX?of$8)GrU{Ay>+E}f>_6M1DzMx;HG!?ueWRfWk3_ELuP{ai1_qD3wt(B`6rCn) zv@~?6EM2oXmgkKlD^rU9q&b`Y{8+u%S6Ks9F%)c$n(>+ukFHr^OiC3Xm2i-on3>0r Xm!Fpk6w%$K_mPodmG$PUbIP~@>H0JP delta 153 zcmX?of$8)GrU{AyXH>5|K3N_#v!cuA`zhAeX&VhicqINF{u#!|z`$^QQP`8S9h&Zo zbo50I|B-sQIhN;*BWv5cKu+JyetxW8>>eCIRSYbfqh`Ej#G`9g7?Y9-NF^NPCT8X_ Y3w8m@Zs2ebxs*K01Od0b^rhX diff --git a/bgfx/shaders/dx11/vs_post.bin b/bgfx/shaders/dx11/vs_post.bin index 5362d6c50ebfaa73642ed24039def296e1417830..dfabae70ba2d0d0756ae828373d0594014349886 100644 GIT binary patch delta 1426 zcmaJ>T})J05T0}HMec64x{J$-mgrhBnrh-EYLIBm+6oA}lr7X18e@%(wl(-iK#WEq z(FaWoDx*dbp|CHQYF}<2Y+w4;Ho-L|CHSB=YIx9UVzFvWqvAKqUH8TZC;4{fd}q#_ zIdfz%tzYf^ZfjejdDnK6h)gOOT-)%;rvvuYOW~bokKFEW z^t_akj1B(+vYc6VE`7807T?~a3a%yjXYJ&2yMx%Cx2vD1BQ?5 z)kibsL=-r~#qB9H&26w7jexQ!<6&?3{D{&#U_P8~q?6m3C_OSUJmSvhnJF5Oq zio@!Zcf9rIs}-Fu&L3*qAKPR<@Qta|o}ixo+m}S~`v$chR@CA%C^cm89e<%FKLU;_ zP8T%UjnhM={6qB!Uy2>#D za6}`@23GIhW*efIWGy@O~Gc%}4m4i_hjGe36SUa>Xgm@$FRX+K@KQCImY3U{>lAtlElEh5`PGGF?>~XjU!Juuy8O-9wqw6OCVGMm3`$0n zxH%mw0eS#Q?53g)N7HdKqVj;8z0+R^k<))pKx22Wi-kJqd(_DC~` z1ku;OqwA8s`Cb&;hitqwF(J>Nn3!zCg|G#3B*L$gU#kkiyeFa;NU6g_n-TJ@X!6h(&bZwI zt7sob`{v~9mW&H;>sz46?(B=H^0hb~17ui5ddrA9pk;_xp~<1FC=+P>nZVP@mbu1F!PzI|GL1>x20^N^bz20~Y20 delta 2153 zcmd5-drVtp6hGhXEo-}?1zITCWS6-_L{=#);UxxK%d4d=bUa2ffv|3{K&ypLwi)T- z61Nax@GX-VlqG7mWdC^+mpBv6jQ-)41&#Cd$3$Gzn3z3$MKi&3F1Ox`Ci<_ZIX&O` zedl%0_uX?ZFAAT2C`@!ln#7QAuGs*VWbeVD=u_cD{D24mB4j3eN8`!FK(u%7(8#C& zb-)yCAQ6qmR4k0x@pInp$96vWd58RU+3ttri_Qxjj=N_W#yEbC;sBH)pFu7`FeLyq zM;e2Js2gCW>pA!?xxJ z(2$CZAha7}HcUyl0?6P&7BWWB{t`dUCTlA(R~gupy#||23DJ;}6rBpW2lp>YYj}pZ zW|yJv8+m~cG7nQpNMX6(beYNZqD5dUa+`RI@jlTg*PBGq`NzAzb&}a+@JH8*>(}6k z$<*_wdcJIt_gHT*UKo_*_i~n)>-`>pz;^~nKFeUtYJk@t5n%a<03%KYC*lI^Utr+) z2B7c)2D4$lj~K7d9xm879Pb}1lMeQdMaKu?@x)%YR4wiDb?*#?+P!Z1e73WqCK(&r z7f*~ximgXlcb+wtf9`50Tf-lny2d2lH*IHbzB)C_ho?;yZmCx4|0`jsYy6N@ygn*H z4-=$?a*gv1{{5Dfn=3b|9re}RAGrP><@58|zh`b*E@dh7Xc;?XZsoyXBqMa+{N!Sl zd^T7tTxJif89Zcg^4d&MW zIS_7G^zCag%bqO&cM$&!nTX+!1_2R0=@n!u>^g&# zDq&95RSEBq-i-#z0-cu-SVmoyN&!o#Qz0n9PBy5k5?a^MCSl|oPW~UxINQh00Di9KsPYp&g}v)I>=w0a=5~{ysRr?w1CqA{F$zWSL(Y3 zUTBlJ)n=BjI)2{qKN>5Q{Nl9D_yiWsxam~Cd{U@oX73Jfq{-V30p1qeBu7u)V7U@n z*zrqIPL{~{bwJ5Ovvp={ib5%QZuS~8I#Jn%{eBy#>}ij0E3{=<(1iL~hg~LGH%1ZH z+k`b6Z31Gr=a@a6NXe%BW!dG9xm)aCz7#K(3M{~<=JU#rspHOyDQfZF)kY0RLkC0Tz&jm;B5(h^QY~xk0%3WHmqvnow^>Zb1$p`}tAf1vx2PVRGM@a?xxsVx2bVgFgWb CmdU~Z diff --git a/bgfx/shaders/dx11/vs_prescale.bin b/bgfx/shaders/dx11/vs_prescale.bin index dee008391ae82c9436dddeacf8fd1277a227074a..a26188bb2955dfb74824562c8ec4cbf3345cf1bd 100644 GIT binary patch delta 153 zcmX?of$8)GrU{AyUz69|TC%Hwc~wx+!`i-o&o&y0@JQr({t9DcU|^W7Jf(PPtd952 zzo$2H16##SLc**0{{w?IUoQ4 delta 153 zcmX?of$8)GrU{Ay8~JCK2`^3AlrOLFp!@a|#f^p{JQ9Bo{|sYfU|^V~s{Kk_Tgq>t zV!*G>(w{mu$MU>!WIc6b1E=q1KR;G4_Wy=JRSYbfqh`Ej#G`9g7?V;KNF^NPCT8X_ Y3w8m_-DBJ>YOre0H!K7SO5S3 diff --git a/bgfx/shaders/dx11/vs_screen.bin b/bgfx/shaders/dx11/vs_screen.bin index 9d5426f76be6c4d274c974bd2e897f28ebc305c0..e2c9393630987d5c5cc363dce6be54f1346604c9 100644 GIT binary patch delta 153 zcmX?of$8)GrU{AyT5TJTtYIoB6`t#z)uDKM-$p|b9*I29Utx?43=Ce@YL53;t#{sS zXQy#;V%Cbyu{>`aSr0T`pEPH)pC79i`yDHwDu#m1Q8QjM;?XrLj7iBBq!JEt6EpJ| Y^78Xifg-xQ^gc2&+_Bnxbxs*K0Ce6p$p8QV delta 149 zcmX?of$8)GrU{Ayj7;oFtebyIc{MMpGk)bJzR^&GN8;b%pJ9v)3=9(CpT3Gt`Qx+P zd}`85qw|+H$MU>!WM$F5$LYJ-&yUq>@&qQX&9O6HFyhfMD~w605@;3zU?cjgLkC2bjtt#lU}RwEz>tA~AJ75SJZHc8sKms@=jZOZd+$Bxy?3WkQ@^age<#sO zYz^FzE)hwzp^}oOr|DI88>ya!R54wM`dfqMe?1s(`I z1ir+cN5EIWZ@@ReW8iDxFX5j6NAOiOk6#t20d1O0h!lJi|8lvMb&*1dnuuQzKKJIq zKcD&RrD@mpd*lVyPGo!A_Q1Au3w5}jIgVh8y0i6nu9L%IHMD9Z_S#{J0{ zq5=|T+$wB7_Z!f4C?2}cFGvkI%d5lYyl2o^o+G$Ekk1Vd?Fnvwi8~P7;SzTwxUWmx zci4~oRuslzd!Vg7xvkaejk?yzCQqw|-M$~Vk!I*6y=3URVU&!`^412Ornjj2^g-o1 z_J7QcWA0Ik*q7eoJAgXV?BieF0HpQrZo;`7Q_sXy a#6Hbq(wSHRu{1$%3id*;Q`Rxx7y1iQ&*!-S delta 554 zcmYk3y-UMT6vgk$YcUq3i=v>TqC&wB>TD@uEp$*s=q5@;N5KwNhh`NzRN~-Rq?29h ze;_ys3JwJ)!6B>Q;NoKZz4#*DadY4StQ$LQY#q$B53OTGFeO9Y`bWtB3Vuh$-_3^$UW$@54^U> gbnH=hoZwwg%xUYSAAdJR<&94t&1qDG2CaBLKf5qsV*mgE diff --git a/bgfx/shaders/dx9/fs_defocus.bin b/bgfx/shaders/dx9/fs_defocus.bin index 275e264bf061510dafbe15fbb141b89955a6df3f..602dcf53c64acf772d9478742083a59d32915bf9 100644 GIT binary patch literal 1911 zcmbtUJxmlq6n=ZR$f-n>;7`=Vi&C7;Wls>nAR=7!3M>>zC@xtJZh9J%H2Vkj>D z|DZV&O)N-U6AP2Ips=tokZ)VGA**|h2 zMntP&{Gq{2S@dJ*)9Aa<--Mu{51dZt%$cdH>0Bmfq{oY~yx& zou0I7o5#n^nfSD2TjaVf??L2wYifYh5a0oUn!p}`Dd2SkGc0gSpar}IeF1nASP|R- z-T+?)E&^8segxhD{|dYf+z?#d7WlOaYy;kdy#x3Fm;&AfriE?+dEEtpi@^KfOF;I2 zE%bK+R|S3nK7{>;;A$h$Bk)#%F<>${tYM>MSV=QybG;M_<19k{d2pp7{O2=;#;szZ zU}VAAN3HuDfrsa}Fl9Azo5Y+D{IUshcgXw%xjSXvPVR1*caXbB<|oPBC-Y8n_sjeg zxd&z5MeZSq=Q8FDOL6QAk*AhX$0z9c(M$eATL!)r+6SS1lC;l4t4i9M&^9FPm(Wz)``UUDjJdT++5w@p zNm@*39g@~1w4|h^gf=W`qZsqIW=dK~Xg4LTBD5u7tp=|!zGzMq@^*f5E*iUhJenFD z8jKG4UuSe6pPMx;qYzDKaV?(Ev_vAF=xp!mpiQrn28Pe|A4YD^IYGP)dEdD6^b-F_{5QV1AIt~cVIliPZLVljByonk`C^%s`z}ptWwp1R_TWi;)K0grbyLc z&OQpQ*E!;4JNBwN*vR(}!9R@7Jn-jn73-49>k;O|Uf%<``S#i#>=P1u$ZH_3`kK5R z$0e@``wNbnwOVf2$JaRa|JjG<2eEI}BG@CSg&Zfx#=I6oEzY36ZTL+3oDe;Ag4iRd lhlgA|)Wj?ExrC?@+E#wSIxCpB7xS(JXBP?1j`#9kp5IM1RgwSz literal 1807 zcmcIkJ!n%=6h7}Isr{40A_`hCLWc?xUTmzbV2y389qOP>!6ERP<{y$KYKKVx^<;MA3@GE8~%* z)!y8kZ60GAQWAn+#exWqAuA>b|OVc-fd zEqMjF3Vv7OI`9toGvICD3(4O|`#Xsrf%jnl0ek@TbYTtP5Rml%kk<`K3u!{;{)zu)H{9T^MI zZgZ5T!sjLj5%Uuc9N#$Co4NLwXdQTkW#**Q0+3q)oo^nO;06n5tLO;hH%2Rrtw#)*_Vi1I=SoPk3O6ss-EQ-xv}nmP84Jfy*j~m z)}2D9mn~ZrSe-b6w0bcha@Tl_&%KJ6#TfHz)a|ZMiW0e@H^3Wpd~3Q!F3cf0?!|b% zj=2tvgdcoEb=+ZG8Rnm=4r@A~9VYwYb@QO8d1tv&wCo%3zyF8sl{zU|teJ~iAoxOAgd&6==v NyG7k}3f9G6<0q=iP_Y02 diff --git a/bgfx/shaders/dx9/fs_distortion.bin b/bgfx/shaders/dx9/fs_distortion.bin index b25548edd315a2262e4eb9c27ef77399511de412..becf5b0d597e2138b7153e8bdde90aca7366dc58 100644 GIT binary patch literal 5499 zcmbVQU2I!t8Gaqxt(&?@8Y0n)O3T)O(ymm_T2R@_nkJ#mM1YbmC_)y-jqSwDKdFDR zbSu&ctIz}$WTGH0a&ZbBO!0tf$_0foGN~6G6sba$s8l3^E|m27t?0;a2; znyqAK)0J#$E<05#SGq%CD|o7&&ZIK=VzoOI0u!&ND%o5CGWl|;I}`)e394L6lStK0 z&%$CG*bcJwQYJN3u9UK{7qz0*V!2$KNu4ZLGGsS_-BM3gpHI)G=1+H<@Ze)EKV8b! zYWdQ1cW5(2F7-&*^WOK~Xd4-tIMy#Bi|zP>A2cL`_BFH_v`5hTVj}J)k>MwkMVNR# zSxgtR$&>YbA(K2gotsZqXVUOqO=jjlnaov@UKJ@bfqf_QrF}DnYC-5j#PgQo7FQIn zD>fA$DE4f#a(fj=6qAZGz#9m*2D}D53w#^+1I3HL-(q}8@rv@-71tE+E5BGVmgB3HW2+B_Q>#D&A0B1HKOaF7PKn=@R)FunYKeU@!0u z-~r$-fuo8^#aZB+;Lj?a2YwUdi@;w2R}`-TuV8#raScehdy0|mcHE=buXsRl5cpll zKdU&SSOb0!yaW6`@I3H5@S@@+<*zE3yNnH z7lGe^zN@&RxT<&qxPtjL;Malo6=NT=KA>qZxJJJ3gGZ2zC@Z;-!&nv9=!!n#M&84g3yaJ&|ecpifH=uGJe(V!@ zYaPqhK3C3Hvq#gsZlxhck5{byeN|;C4cT$trNibb^)(ue(?*mQJr6P`X3MoBnM}5n zK_01%b6>O<>bkqe7XtRF2$lbe;Y$GAL)`s9m4IeVOd@Rs^BGBKDKI3Ap2Likw z$WWoqayQ0|oR#(G#ky{QkbApES)9D>Kz)EqtU!-0M=oiE9BA$7Ep zo*qfp(y2sB`lyOpa38&}-uJv0(YF@EQYu%9=|cX6Z01CMx>(L<^**S&oT)q^jjd*EtyR)y>oju8kp(wR zpPy1a`uuc2$3D+nH7a4w&q$y3bLoOKP6c`FrO)Sb)hw#IN2OVt#{>Pnf&Ru<3277q zw&wU+GsUG$2p;?R*__!s9uY~Rh0!kn`C9}oq4Au({sG)Cl)DPNsd7!_?ghA5)R>bV zpfA^_Tq3}YD0dtvW;*Li2M=pnnMM zsB&%aF{WGw==+#QpTD!pQSN2*`Tq1OnqR*a^lzcPi{|UzMW4Ta1vuGkIm-HViG$mL z_9&VkU!Te)0^A|xMuEPMG36$KzP+y~R|v?}l%pSC&Ox7Rb}k^dq;jtXxE1AAfsBv) z<+^hBfUJSJm-W3e4)pWbf&ORnQ5Mo75Pfd(M}ouQut#d{cE|4vZoG2?qgfh>Nk<96V!}ei@t1X&Lb@ zLr=nC6K`{YanL8nVdUM3d2*Ct4q^B}$FXs-4jy!@jIS5^06pgTzx0B(DaV-U-{#wN zhA@sGU)q&e)7>o*sCWxp57q)}hdB4Re6~KEUl(fRuM=u$v35VneuLxvae?Y}#=gx}3K$a2`Sz1it9k?$?m%bIkhKb!s!V z+hlnG0WJ6(b@BFqxe1e#$R^Vd$qmGJ)um6nSMI=%sgdsMCgNy~MeZzM{4Lz)n2*2) z_wT?e_O>60!eXQ$c`_#wH?QBMTZP;t58}|rGX6KO$a^{&2JMDT7@!T@< z;Nf$^*dvGj0&9sU7vkahx3%FM$F2OW?RK1}cGSq%p*&?cj>u+}Z_*b+3SsP@dE2+S zha5brUB=m(kCDS3V=UW^9nRS?eT!+nKF1qlp?$_Hj+L=GU9xeHdJyIBFV49a?@o2mcCkx4{;^Ly))ivvGbI^Pc+=vo7>)YereF z$yUq-br}=anEvCK>rg$)a?ba`anMgEWO;6_4E0+z!T$%1y$+o52=*Ct%^E=#Ybs&9 zd6;?B%A5hN9|X*qXxS6U*!|tf%h|q-lRkI`jUBU3?RtyuLu-fg fE%}Gnn)`$MPHPe4zT-M+PBGTha~=oD? literal 5447 zcmbVPZERat8Gf(rG|qP#CQ*r^MYJ0os-koYqp)gC6RYi{z(U%VJTTE7u*3S0;a#5 z$QRsvvfw6`+}TpDFyMr(;Pd5VDv?Sr76%*$Om{g^aOX0RN$0WyP83uhs9Y&YB2hY# zhs6-sUb5wEDlwZYWL?;6v!cbtT&}c`n8_7VWVe9rC?|@?llesD#DED8K9Xc8N%)6aVl)LsEEOz`KC=VZ0I*d1;Ht_^0BFFmXJ- zm|S$@Gv#z96`z@(tHg^7Nq8^DQ)p@mE_BlIECXjHl_t|*>Y z+)%u#ctmldx9FF>vi{1Naj@F&1% zpU5A9+krm??gsu0xDWUX;G|+oF|T-1@g>Exisu!7sko_l9r$(FyR9hww%@O~9k@>a zz;6Rb6(@mTLqD#VS3IS-qIgd6=ZYIZ+SydR4*VPXcYuEZ%2td0iaQlY6b}Qh(XaM1 ziYFCUfZxTqr?{@T0el7gCh&W}8^ANbJKB#7SiWCzP;o>t2D}ORqlzgYYzt`o^hp8Y!i7p9db*b$)$_#!6c7Wsfp3! zQEHztBWvX$JH<0|+#H#{My+<-h|*%C0huHDTJ%B-6$xdjdQQI*xa`yysGC|^7_HpcI_ zTW9})MdaS(=Ytq!uK9ls!GB2mWVQ#!7L)0$%x4k@3(5IdvXo2=C!~UL+GZV{P}xQ! zEZJOPF_}rf;HHkG=NEJ7lpK@Y&2f=qv*j5VzI@;G^(0N1NE!|EF&)cQBrmmuvh>66 za}1wn=J-oS-p;Y`xYV#!R9mEwH04qoHJs(a&C}my8*+dC~9q zQZgg8TtL5w`gwM4uIM6@=96e5a0H(zJT^9bGMerCuL)8+X2xtROT4noa`}e&NpI?~ zwKpOX!y88XD3DJDcnUA~)|vmpdCFY?UQ)SD<*o*}JIdV)aNTXjg=_=*y1SLz3mnBu zzmv+vfsBRS1?A2GeYthzHUivR%3Tj|x6!_fw+r_fe{S2*-idcexe$DeC^rH0eS8^h zJ{jdGmq(j-qi^A5{>Yt0dmZoZ@%p-#(dKg{z+G34vVIP3q5Ur2f8+JzlXk1y4fMHf z%IyUDK6WWL0`%?eQ|@p;Zc;h=@#W&+xMm9hxr)l23UDjRodq%$*2{V2Hi66m*X=sm z%*!p6Blj-apH9yfa>d+SX>ixnV}pk$j!X<5F}KIT@!VoQopB3;dxnRGhxQB)@7Xi7 z=gBAbj>vnBf{Y(MFvhduJ2Zs5E3d2UJ1@fzxH@U}u>!Y&eD2{5={G4#Jv`fhA@j|^ z9ZR{#3}?R~KKF6M@jl*?8#A2!M)`76hT~o~OM>oiKSsrrL*R9Uze)8Sm zcMM)UaPj4jK_1WGKM#@bG4dObzp?+te|^OGAm0oATHl+a*ZQ8>cxr9$8=ZgN@f7(! zBVXM=H#fKcPn#3Xc>0xxW!k_~efnXP4~~y2s%?dBkSn;Xdvq3F7^xT7+ayR^g_4pVScdF zT@A|_?++j&K4 z+r$%5yO^`r8WSC}^Pw#B6_K{4?+9`yBC8RJ!OuUc)_2(Wh`V*ug$e%+U)ze#*PQ)uaj*vM&`Gxxu#AP-(wFsT5idP z$gSFVx5CD>v14<^`3h=HyiU!J?}xnAvA(Dm)WN-BwdVmH)|$;J?M?^utxr3*ttLj= z4`a=&4;x3Xtnp_q%FpUkp7kQgRX66?jd8}{*IEzyJ*Y+8r%>Cr{(|GM1$)!pBN)do z3R7S7M_I_h=KZ>@SXjrw`LZq>9_!G`IA(sFgTGhWq`vIeDc6|m*^l_hQHFC0!6w?e z?q-hAu`;Z0>cLJ^Zwz{@J8}}OH|;RD|I1F$7v+LEWFGx`^7FOjeYuNP+YvKvgv+Qe z`Z4*keVY>pdx$dJ$K0RR2KQKF+2(hE?Pd-s&wK{!%=b^erNg}2ng~g|>eo%a*vEX9 znODw%>ufox_MtY&+cSb|BddRDf3}Z!{M&8&l{b)P&u^!9=>_wy4 KAL8-Xj{FC3hh`@L diff --git a/bgfx/shaders/dx9/fs_ntsc_decode.bin b/bgfx/shaders/dx9/fs_ntsc_decode.bin index e31c3548b83396eb1f2cc364991e19ac15e5d69c..5d2a3329b6f931bf291e3edbc9f79c8e93a130cc 100644 GIT binary patch literal 8439 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 R;rXj8h3BU3mL~rK{RjFa$nO9E delta 838 zcmYk(KWGzC90%~-6dA ziHs*Zc6e$932H6!}%Cz5W!H_+eX7*WRITZ|7WPbjC91!Wbk@Gq_sTjV3|?Ue^u zvlt+fwqXN)gOA`Z_ylgir_gT@HDL@sgM;un9EC67X}Aoh;X7DX&M9vy@4^+-n+8?r z6+#;W(ywp{{#5>j?{Tl2juE(nhz69yu!Z_b*oIT^BP=Vc%6Yho@jJ@<%BC43`h>zN z20p_da1H)ZQjlNw#4AF?@l+y4E)qiSKnUkn|!y_y7A%gx-q`YuLkCs z#eGJv79y&Lc*2Mx-K&QdvWA=WScv!mE$BL14af0Muq?;2Il|&|NW0;aB&KC*I-~^umOsL z0EkKfVpbr|0Agk!1_@4Jm{{PZ%)tcW{{Jrmr4@j56HrzMO4~3oOn%9zTF(Mf2Gj<$ zhM_DzIX@@A$bez>>eXOjxH!-`$@%$3DF#3hX0RyK5kNLX|9>Eu0Ax-D;w3-~65j&E zAh82L3==y86}thXpD-}6gB5;Zn9Rd$p|8Z?9OCFC1C;RxVvxTljQ5I)-p3ba*GDTo1y3=Bm=k)t9AEQrP`9f|}^D=}Dd-Q+d3=(&&|!w6Ee1 zf&^+nFF?1Tr=e#Nix8;ZHd{`+`PgjPEn#l-9JgU^G&lQZuw^%dADE5)Eps!lI=%?% zwkt{-PP??_1}+VUdn{u(y|_df+L+w5Nz{i^5r4Y-HrGJC);TmzpCfioF?%XZq- zbgf0-ZW?yiwsZ@-a4k7#D(B@sD*O)eCo}omR^4+wU+42uKHoy4Z61p{SE9paNo(fS zMG)tp%&(+LWMq5~q|eOw8q(Lv`1sqfyw3REVjV$0Lcc)qqkaB^9014Xe#4r1htM(a zhxGjhj(Is0f8VM5Uf^wZi*qYii%ZM3fMD)IQIh|jyJ($$+q%_=pFD8yV*vE)`2V?DEA8`PzYriKzTB^z}D|G^E-qQc;dc%iAd6lLk9JvR*15M;IO2vGIMAHLaW7I>`kgP!% zP+>a4yyA)qI3(99)@u>CXvZYh26BufhFin_6mkywgmoO^S>>=NIHORdwfE2@S4ndt zOTaz|8yQm*=<{O~~P4k(5gxpbbKG(@{f}QR= fu05$q-bG8|gc=sGCwh|Fg;5$WNSj6je!cV;a^VrG diff --git a/bgfx/shaders/dx9/vs_deconverge.bin b/bgfx/shaders/dx9/vs_deconverge.bin index dbe6e5847675bc78d7f221935c999a822db46d62..c514e5f8cd086ea36a24b5ed925121046e3fe1e3 100644 GIT binary patch delta 571 zcmXYuyGsK>5XR^B9=Vv92!fy5h$s*U7#dW89LR+X=mNET_a~>ldSz|CK_sPP!Ut2#WoDLH0FSX(k?ArI z!BhBc<|VVo95A1lZ_EHZ!@6&iR>H)#{tX8_M`4MXWp06O_%3(?*1eb*H1Or|y z+pVOj-|s)7P=sEX?_dx5WPUM!nYaWRGyz!@M^oae3HTDE(VNwS{c{flG!lZ!;7|LJ8h45G^ z+_&_Sh|UoSlk}$PeVCr6d;3;KGrT)1vk2FZP;e_KXyV7K{e?zJAGtb1;59yK9VxNf EAM_<|761SM delta 501 zcmXYty-Nc@5XIl^T{h>}34(BbG|?tSI*X)G5I;ytK@#irc+**~ob!yu6kwSXu9G#^ zJHkWZiSSGq37f(edBM4!@L8CUm+XHFJ^f#Y8X8yj;&?&bSK94%mqm%{3!lga^(y=j z@*qAwpi=l^Z^Ay6m4b^IIv-PRIRVLfJrWzCjEt|M(KjdGxAC>LgxkoBq(vhR$j?O!7{HgO94{nmi@J3-+1;q*F LU^=0XjN#lbq<38r diff --git a/bgfx/shaders/dx9/vs_post.bin b/bgfx/shaders/dx9/vs_post.bin index c006fe0c6acc7240087913e609e771fab243668d..66dec862e4cfd9726c6a1059091cc13f74df2d38 100644 GIT binary patch delta 417 zcmYL_Jxc>Y5Qb;7Yd*Be4~Qt(2wGS~u&^Dhh%rw9qCX8XG?fEp5VLZ7bYg zNMmP_($YdZ3o8+c&8^SCf&=e8Gw;ss4f9jZi|gC16=!a~-i?f&?RSq3&zmQmV`oI1 zw5`}YUoQ$l) zEBq8*!lv~z=HWWavIVLEZ>N!Ku!ctPm>*f$qb}V2SZq@J!py(*m0AE`O3A3_gK$(d4ajrfk8Px3G&$>vg{hSx&6KW*3A^h8$S Z9MTQw&K8lz|K`Q-*n9tL>wedb{{fxUOPK%w literal 1142 zcmbVLF>ljA6n?fZrG%C&9g*&(q_x#ZLo4Yxt`{ekJKV4aiG2_yy=v3% zRy#ow(0I)GiLz`@D=?5al=xEONaB&iW8gE?{v`2>#IL~T;7=v~lqewf1^5+U3ejb1Iy_bjJZX8tiYJNf){fJkZUtn=NAU^$ME?~d``#pX2;Z=RB-l*%1{3PhLC_L~3FV;W%aB_pN^z4$>?2*ONFRMn)j1w9lUY1sa=(btq_3pVHUWpNsvytF zdxdsJ=mVY#YVbFWfXJK2OxV}J7i+Xsz*p&Hw2*5NDfoPj^AdgJ9LP&5*M~o1A9rHH JYqE@pegjl{>zM!m diff --git a/bgfx/shaders/gles/fs_deconverge.bin b/bgfx/shaders/gles/fs_deconverge.bin index 9a70a7b0737743e2432e4c1eeb66dec1d88c528b..855f8019b5c322f5e85a12a02fc986aabec6fd59 100644 GIT binary patch delta 86 zcmZ3%{FGVTE!czQxX$dEj0~*B@g=Dh42%pwbZVk_!$fmgM&pT7y(fNAU^JX8%4oo7 oG}(>OK*(5AugaQBL7^nKpe(T{-cYZ6ayX+ri-9JPQN^eS04(Jf{Qv*} delta 66 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 B*3|$2 diff --git a/bgfx/shaders/gles/fs_ntsc_decode.bin b/bgfx/shaders/gles/fs_ntsc_decode.bin index cb4ddcdb7b40ee11a23dbd2b2b351bfc1029da4d..d1e69f5e0e365a68ca3fee83530d4ebd3d4e0511 100644 GIT binary patch delta 83 zcmZ2xbj66%E!cyFvH8}CPB0*=X3`Lv`hdsmjjE!cy_-*txPMvfDVOdPzMFEKK)*yvSMRw>vjl%!Ualoq8LxhQB9#{)S! z3d#BTMJe${nji(%TnY+KiN&eT`8oMT@rHWkKplp92Ae;!7I3gbIg^9=EGDnwlLG)4 CiXh$BL21W)Ty38=qE`qNtKQl!kH!(9$K|_+=8;iqIko}f=r^^WguP2`T0dD29p;s$p{-NXepG%C+Fwn7a3?;bJcQj GF#rI39UhVZ literal 719 zcma))OHRWu5QftNn;`BmOPjtz9;=EKsAA6ntSGNqO5(_Q(1KX8=Z;)~6EJp@)D=`h ziWFIwI>aeKtM7oclJscAT^~BMc z8>2rgEqDw?$V(v9ezW0d(1oU`&>6d1V|X~jJrJY8=kumEQnoUz~=Vqb~zDhl*(H8x4LIu|efrh0Z@hyxVk7@Jlm zxDKNCF$Y4@9Cv1znE}CB0A_lKhvlLi7YSoz4vXRJ)A``Srxb@W%$+LAOm{~Anz(kH Z_I&%)!g74Im2Vad+)Yw{Q%~$;|u@* diff --git a/bgfx/shaders/gles/vs_deconverge.bin b/bgfx/shaders/gles/vs_deconverge.bin index 1183e5872a041eda905c9a19cdc8c6ec301100cc..08aeca09e237da782275d5022cac2a483c801f74 100644 GIT binary patch delta 91 zcmZqV-p9=m7VN=tTxa&oi5v$QKTbUPXtFn>ETi$}m5c`%CClPVQY(`4^NUgp6l@g| p5xmK%%o8RTu^3ENW$~T-nZ;n@0@lgPS$r6cCx2tspRCLp2LKodAo&0Q delta 59 zcmV-B0L1^k3xNv=R#Qj>-7MGCkqE#6w2{f;v&#X#0h6W!i~%r{F$FJ^VgyZ-G6XP@ RpaqlU1Wc2!1Td3e1zy687Ki`< diff --git a/bgfx/shaders/gles/vs_post.bin b/bgfx/shaders/gles/vs_post.bin index e9803083792fc61ba9b42102a8fba944e4556f55..9dd618de8a02bb855e0ba2f88983419191ff7d0b 100644 GIT binary patch delta 49 zcmey$vY1&mEZBpEvH8BAq>!~(6r`KP$-K}&d$BL21W)TT0T)cW1^urqw&OAw~5yk7!4=>Fkm#A ntjTB~WUQ%IWzD6aP?B3vmRJ;Ts8>GOicy}$KoiJ_Wz+)z4N@1y delta 65 zcmX@a+|4ZR7VN=tSLgZ_Mh4d6_>$BL21W)TDwrsqF>$5~d%1$Gf}x(l#0$EN1{41o UFd9zQXEb0j($uS(JcUsY0Cs~CrvLx| diff --git a/bgfx/shaders/glsl/fs_defocus.bin b/bgfx/shaders/glsl/fs_defocus.bin index 0adf5a7fd67b4c28fc665745d9dc1f646a05edb3..277656126642592e0c532d29afee05914fd39660 100644 GIT binary patch delta 355 zcmeyt{)l6O1(PbvM5{>}CJIS8rA0-lDe;EZTnY+hsmVqPCAkG4DmjKZE}@g=Dh$@%$3DF&KQ1599=Opw%@DA+1!XlMXUQ~=Qs28ao@z<6># zqaCx6rsm{AX0^!y%p8;NF$ysnP5#K}4y9`?6dToc({34KAxK;%%g|hhM{2Z?QB9NuETwDwQ$2(>P delta 233 zcmaFF@q>MW1=DWkiB^-uj1)?83(69U;tj326yWTMUyLR`=atYaSFlwu)H6VmGSaK4 zteRZNC^^}jQFih~Mmt8s$rl)%xC}Lc0BC}O0#HzNvLTZp8&C)+FnJ=g?&PUVvh0RX z>5GiIlbK5zu)WQ1=@tXepG%Cxb){G_AR6xwser(NaJ# diff --git a/bgfx/shaders/glsl/fs_distortion.bin b/bgfx/shaders/glsl/fs_distortion.bin index 11087b688ff8ad08f84ab593160d5426fcbfe7c1..149e638711c58f803ff5ad73d669c27bb863557a 100644 GIT binary patch literal 5164 zcmb7I&2HO95SEMfP_<|a^ab`5khVmNOZ~!ifYwFOTMu~vf{`d!fFvp;rBHQp>XY^r z`UIVs-C6FERO|qOWA5(EeEZGs`pw%vzP|eBzkmC^Z;x^DAvwg=`Kzm5@2dCRF@Aqc zR`F`HE7Z!5$2iZ*q}*itxI7%-xO3Gud5B`AS$Nef^ zX8AtV$3SPX%d+yX_+6H-c=h{ZeA+zj)3V&`AC*2>%G320EP#2n^i2_$X$4T>U;J~g zcS`azoEHE?iWBZFGf+CZ>mT=7eKfLuG}3UM&cfEeBSB>c&t~&C4@dR52>l_V+!3dQz9?;!JuZ(;W z>9$B;q@s&~8$q^(u{8x-#rwQ8wtb&Y_}Uy^!|@5i)fWd*7MqJ(z6FVQ*~VCypmwdB zwV*=B$u}k>I-=CJ@5IiSy}z*Bxq#zPGO%7jmUxsV19lvF%}NeDtAdGCkoP=K-G_Z$ ziPr+WMI?RvsMusaf^)s;3)nRqmH0*b-d;WPDu=}5Hhz;QkCdwb1`C@9Au~W({R3^| z{hT;(qB(@pXvJ4JLdGz_hM1gng{iZX6mqU>20|(oCQ8E)v@Ew!Zy=%-B|^o`Dl3K8 z;io}YiP6CYP}t1K$H*bTbx;Ck0NaIjHo+{Unxf*=QRO#C5*h=QzMwk)ja0CU=^K(* zUy1>R5YaFFnr#@I z_F6~MlSWBq3NZ8MdR?St98%%N2yhm`6rS{kNFMT}%Q7C+rks8VmhSH<)HynzQ%Rcj z-625LEk36li}AC{72Ge@4c>aGZifm3n`mV>Q@^vA(lb?uH>l-G6Cc#VP_WLV36u#U zmI<=AfOO1KGqZq&TbOO?@3SGe78`>QBQ*w{0)h6O3sJYk)mqCGJ&q1<wI^T76jXz)f)~4%Iy?&26wWVGIB!$< z64&B5!mc$28`o*LmU@?qYjGLZqK)e%uC;L)gBM-vxaX!_hrZOWGxn~$b$Hym{lhKH@1yBuJxhcxw}`WUx3r=3Zuo0%H^8Y6+!jfL$*HVrObFv)z2jR(J7S82d4um(H+tY@OID&A5uCEUW#)us$00g68K2QWX5&kZ#VyPRM8{WES zux}4|)B^$InF1cC z1y;&vqYPd;UY+%E^`ConUHw^>UVn6VUV*MS;0i3E5BlIuey}$4Ll-aT_`3wzrBhtt^ZTCcOeT=X^5-=0+m~|#S@O{|X znpM_uK$?MGPBA?h%Uq?UzM6_ayn;vNQkMuyEiDm25Sw2)!fWMoq@R^9T57ccNN?Z> z>ItP27a}93JxJ@wK2YDqedNA?BIgC9Ee$EpU=$i+K_XYG)Kjr$)f|3(G?!Wr5U^7h ePp0DH10)JfA+W6L>olH|mT80s-TG6%-}@gD#h+&Y literal 4921 zcmb7I+iu%N5LJryp=!|<{epc8NLy0G)zxqvpmh=Stq=JCf{`d!fFvp;B~x|$)GzHX z^b2}s_QG9Kc48nf#GRd)GxyoNd;iDRum1V(-)`sILtNY^`?xxN^{Uf()%orae>^11 zc)8vd>g2~moM&ZHuCrZSp7yCa{pk?z^K_r&X?#oe<1e5ZW%AK ze3$BLkXdZAto$qfkmXBr`u!n3uJ3kfS*~|?N*<2#bhUv7s8>hd6mgkWfQo;cpF5pn zlAmy20EQGtqAfBA9bR`2yY(u|w?r8WYiH}++S{UdcDJa${VlTfLyO}2qeb-m(xTS> zX_0C_)ubZX?l);Je;4eu>+UgIFU2-l??e!GAG$*M=C`CsZ?jF7$I-PqlR}-rk+{K^S4tj5x+&5x z5^>H0mx6T*t7{5f#mBs~y2FrfgjyY$;l+gDYQw>5*yiGmv4Yvp>84zmkaR8ENFjk< zkS}dYoXJvGf1Nu{iVv#O-?)TEL0t;95pZ$zOt?b2KxVl-_uxPfY|w&0nPEa)iMK>& z-+cO{oM_xIIMu{ZfNBYq_(g}@Jw2IIlL;;m1s&q%OmDnnrB077z^~VX;9|LE0(@aB3{GQUqs0(L2{gRQ~iWsE{&4In&|< zz;g&^6Dl!o80=_ANT@wQF=)n4xl9A(F2^Z=`qZY>=3VH>xhKI$xeToV32iAzQlNJA zvSMyh@Ap}G%PlJ6j_Q8Hg=bu46RSB_5uCR=M;_Qqte}8`KUb?FE#rv$vJl=8l+eAP zPtGFO=pL(EPGh7)#|@{q?LE(nW2tPd5S(()iKUKe68QA9n)ZZuVNL!}S2rLGlR^@f| z1{$7%uF?s`({wAJKrlTtrv{qpSu|Rec4Q-~&vgKltCyErdXv-pu4`<>*FD?4;PFU* zY4CWMyIz?+<*pe=)pOV9gEw`8r&W0dG=j%#fQx4S6q&cFa@5tlaTK}pDB^+SZuqdBmH_nm7N_Jvj3Iv4pKBPX>WZ||Rc;iJzJY3G~jgs5FkuP1N zeT-111Y7+)_zfq`GWIkZj9p?jp}im)ObnwC$%mq5W}C5^p`>ZZGCo|T_WttOi(S@A zmPVo3a#wk>DD{3p&w?U&dcoi+Cr5*5Je*$jfMz0QK_Q*wx{#|epH;znpc2p7WmrcOvJ)Z7`@(v&o*!<}sBLi!3d`W5r10w?v&0?5n=fhW)pP8bNo0yrWprOfCJ^28m is$3aJO>%yIQHp`4f|f#Ad~$wHevyHuHCHVc7Xtv;=@+X2 literal 646 zcmah{%TB{E5OfP%g7}9$+R#UE!l~i}RNVOhD{>x+l*ELZ?Bh=ub=M=a@C41+mZ>vbJL4f^;%{kE$en_vFqN{MO(gS;fTCU2^kW- zE1Lp_OvW$>sVb$zRp7xKVI)eWbc&U}DRZT3Xp?$VWtu;O^*t7>(ux0B?Jx%#sWOE+ zDI1_H_z1uZ!lA1-IDxodA>i)t2-I6)vE9KEPJ9qzhT%(aPl6i>ZyC7#pC5Vr$nbNW z$d2xZ;tb{xE*{QoV~-Xa8a838{VWeFG0Q6|vDQiPWTH2%m`>O043nic+8I!aTLI)1 zzQNJjV0U0ElsY&<7g^!kpw1X#G#h&W<_?OPWzF0mF=Lp83!0&-*$I2tUlE&L_ov_j IpFu!=0eSAk<^TWy diff --git a/bgfx/shaders/glsl/vs_deconverge.bin b/bgfx/shaders/glsl/vs_deconverge.bin index 137a591a958edd91e04c7c9c319c0e536245c3e5..2398d71b227230a80b7d74368222a64790ac0a13 100644 GIT binary patch delta 90 zcmbQrb%u*0EZBqPxX$dE6FCkr)=xaSW3n-$IHU3Add6->iTIM#isbzKq7(xKTZKdf nZ!#-$%VahdgULIYeJ8iG7))HiI@y}VhtYU)7qkB4?JRKsmaHC= delta 55 zcmV-70LcH$3Y7{7R#Qj>-7MGCkqE#6NRi37vzq~l0h2)ke*rL)!2^7gzymOmpaqk1 N1Wc1X1Td5C1YTNM6$StR diff --git a/bgfx/shaders/glsl/vs_post.bin b/bgfx/shaders/glsl/vs_post.bin index 510526ec5880f8c8359ec03d49d077d7aabcf80c..af6c9349f410fcc16eaa87e32ee35a9d92bb026b 100644 GIT binary patch delta 47 zcmdnV@{>s>EZBpEvH8%OMP(xP7$)+!zI01r3cvxUmKbTBru;Ra9y!=!3)%2Iy62PL5%e1pp%iPN)C? diff --git a/bgfx/shaders/metal/fs_deconverge.bin b/bgfx/shaders/metal/fs_deconverge.bin index 60d2550f74dfbfd785617ec979f190f9a6d10204..ff76a618ee1e3ce8fc955ea55e4f37d0505c7bde 100644 GIT binary patch delta 191 zcmaFLewTyCE!czQxX$dE3=DoO6M4Es6co~O@)Jvp6w2aDQY(`4^NUi9H%^(tH2FA_ zeZ8@!rlvKQf(r7zqV>9Ii+bWoc?F(; znccM=7pJLDw)f*dznPuc@%iP~*ROv6{nP8cebeg|d6aG-4HA)WgOz|ps31P;=SmhU z1$S|vE>wJZ6Rd^&mTn6Lzxn`SoCRtOxBe=NGdVmfhddlo;%=2?a*d;p?KE^XNg;2xBPxwFt9Sk!z_Cg%goJam6B7_b!4c z1*gSVKT)wC!PQl+f{pN_bh#YBDogS6siMVu2YOF|d#;Nx6w(>8S`6wFRp%+EW{$nl|rfc-Nq7{mP>OI64d- zGj=0)FL@aI-@tg!gCG8czVK0TH}=CxsqPHj*<=7icf#O(<*kvowte{GQdku}!2qs3oWJ(g&BsZE2 zdx=9`fi3X1qYJ3&P1sN#5W8}LzMBhnMqw z^W$&|o7lU|{mn<|tasJdGzzmkX~r*QFt3RA{D3fp(p&Q|3(7*d3dwQ8(?_Wo1e4yC zAEjV*qYMQUqK<-f+CfTePFnT{LTjZR_g z{{Ux=46ePY{GvzA-C7SPm3Par7qbaC_Kd-sI$Q1Dke>~srJ!ASvliZ5H?f^E5= z(F;CDFp}}fj>N%|!A{L!TQq1?gU4l~dQ#Q1f4>Lo20Mj=N;%arzO=uaHnQY4N>Lq# zb`N{ms+L7o0INE<>9DL$LMBH}pfx@_j4$LklZR_-#_})&vE`zQL2Xk9LDInCL%U>j z&sg%tU`wK=`(-c5^~Gg3e+Cr4x>}f}?~f^~6Ql!PEs F{{UBY&2az# diff --git a/bgfx/shaders/metal/fs_distortion.bin b/bgfx/shaders/metal/fs_distortion.bin index 6dca893e794c00446c48bf84799d90aeea45e95c..b1d6bd4c79daf4243eecfe5e0c247dc36bc86256 100644 GIT binary patch delta 1384 zcmZ`(J#5oJ6mBJ&KgZ6mlOode0;1S$;@D@WO%zHcs#GmMs??4kMJ}XeNaT=&Dy3vV zARz=y4~dNp3BkmGmjhIH-_f7wUSW zi3C9~bMoHfJVLp_0a-+OL?hR{v+%;3CQ)ZCOly7hYB1_chY=D*yIZr-GF>o4D^+;kAEiu-5!XVKl&zz44GN;R2=29KTnFFw1+C0!=#`%mUAbJ<2p) zJ_?M(%RmK2m@(GDGDO%o%rSxF9)B}ZmoP{srJ3iMC6blkX3UjU$K>=Ca{~S_c|Z&r zDLN~b=<-f*93BTN@GZE%Vj6PnAy{B5aGM<)Ot#Bp;0>E1u;SsOJr?D_r4FWggUHE~ z?g-V*y{XcEdRz(~a9P;llJJoeVV6t8!H}jQBw$J2QxB^m9aMCP*w+?o6l^P`!PC&} z3PSo?Td-|_v6X4s1x=X*iZ&EMCp8=%qBR_*!{$0hSq%vv4x!K_}^jBXWE%eYyj z`a?6al&~Xsz=@^*+sHDUie_S4U6UfG$rhtx$~Lqc*K*6PXwiKMRm*?xqm_LT%K#Ix zImz9NYCFJ|M8$*{%AxfV+>1@aPV6WFv<9WLwJ*0i^fmY$%RnNYfkJ$uL~PN=P>2q) qRIs!(sVfW=a0sYcM!Op??`zm{&8N5q0sg=535IR{*l-UX^2xv9qjKi} delta 1094 zcmZuwO-~b16a}%&2h*9hGXsLf4hk|up>$?iXw#rkA^}3;!i^h3#sp$aNk1T1RN_Jx zEFdvC3!^(X8kfYl^A{N6M}m7yj2ogPx<~JuwuDwUFZ1qw_nv#tIrDhrZCskVF@3uA z(XX#9Eid&QX)lmWRMzhq6UORtam_0)WZ5+*8pc&`WpT2QFO(PT#9hkY_VP=nok&_Z z2&_$?%vS4J-Zhu<1#i_glZoW8Q9mq;_1j>FpRPmM$()FH?U`_6)TXGwMKQ=_;Bh)C zTo!NW{+UzpopbO>*D=a-ie=Rx*icmSN59l=I}8k4d^cY47x9rF!4cnsD`FS61rDQf z;1s2=2rkxyp*9+cz6Y=?$aL?*Zy{2T@h&yBjQb*rLN9KLVLwq6d+vxs8Q-BA3162uoLRT zUT9Xas9@Qv7*z|3u)|Kkhb4cc@hp5k<1!aB>txxHp`=fGb*Ni~%7R0(HbanNI10~1 z8r5)^8uO9s_!fyN>lIeEQP&Rp5zFT`r0N({#~NMkGCP#jYfVw+{ay8P6O2njpik?; zgyx{6T?kjFBwLy0N~yd`%)i$9u&c%JL+gjCYrSkWV)DdhH9xvc!C5`m1k6NuuBYhd TivH)vnu6EfiTO?irB3xP)oMF6 diff --git a/bgfx/shaders/metal/fs_ntsc_decode.bin b/bgfx/shaders/metal/fs_ntsc_decode.bin index 5450ff39a7152ba3832a11c751128b0f6ed05e3d..1436bc4707c5116231a4b69a94397791d1225cb7 100644 GIT binary patch delta 108 zcmX?TI^T@PE!cyFvH8f^E!cyFvH8jrA%jtE{;c6r2)^Q=Rj3 n@{8gP^~x1&6*3ZY(liY93^X^Jvl?>qq6kfn5(t=lQosxVEeIQq diff --git a/bgfx/shaders/metal/fs_prescale.bin b/bgfx/shaders/metal/fs_prescale.bin index 035da8beca40ca62f1f09cbcb5478f03b8c4f8d7..6a3da392480084ed1b98155d1951154fce2cb223 100644 GIT binary patch delta 83 zcmcc4@r#AWE!cyFvH80B27=z^o?} gpIed>pQ%?CUy@ppoS$EmVlep|vniwDWE~c500>qc%K!iX literal 1111 zcmb7DO>fjN5DijK`4w|QF-_AYo9(5*1*s~BibKVzT3K$^*+z2W$RE`L>WN>jBMa~Vl9V(8zwGuZIo>d90W5r zM%+HI9ao>m$r|{c19U<%)4(HbrI2cM8ACOO3_r9|svSn3j^li`CIUS$(KWCa^h&Y) zM+f%TsxM>TNj0SXE!EPhmeXB7=!HZB){&sP|Hfw$9fA*hd?qK*2oi5tKSFUtFCC1a zJ>1=C!}gr^<91s@D@XkM95GOQ4Zg-=&Ash9u8I}eZqcI>0Farnir2e$-oy`}9a&5b z4?ed9&4x*E<&pF-(U=wDK8xgT7JpC6*Y9tg6isB27}*xI#?BWdC!% zh$crWH%aBjRTelJsgji-h3?GW3sy--&A82tUbXQA)JUooG!Wr45;t&zn)D7v~jwMBWs}%9j?T?< UzV#VKaa`hY9xLwIQ=VtP0aHO@rmL-wVc(On19sr>H BA_f2e delta 59 zcmX@Z)6K&Z7VN=tSLgZ_28KVZ8+q&)CvFnoT+XP*H2DPcY(|606IjhA&ti$4oXlcA PS&ubw@^>J8jI|8_YZ?^h diff --git a/bgfx/shaders/metal/vs_post.bin b/bgfx/shaders/metal/vs_post.bin index 7d355aa1df15bbf88e83e4dd5599a109795f717d..122b7dee5c387c772067b0ca196a2f12b636ec8d 100644 GIT binary patch delta 37 tcmbQs{*{#{EZBpEvH8`oczQRBZac~lGKXi{QRO6!-*RtC+}xu zpKQY@WeJrxQ7DZs&Mz%WPK{5=%q_O&LKaUhN=?m!iq~3mm8BK|jhg(BQFL<&V-RB~ x+*}1)1r3e(+>)I5Oua<7bp{Gr3ShxfJrq0iDk?P<^pT_x*63AePTt960|1NeN9Ouniform("u_screen_index"); + if (screen_index != nullptr) + { + float values[1] = { float(screen) }; + screen_index->set(values, sizeof(float)); + } +} + void bgfx_chain_entry::setup_auto_uniforms(render_primitive* prim, texture_manager& textures, uint16_t screen_width, uint16_t screen_height, uint32_t rotation_type, bool swap_xy, int32_t screen) { setup_screensize_uniforms(textures, screen_width, screen_height, screen); @@ -153,6 +163,7 @@ void bgfx_chain_entry::setup_auto_uniforms(render_primitive* prim, texture_manag setup_rotationtype_uniform(rotation_type); setup_swapxy_uniform(swap_xy); setup_quaddims_uniform(prim); + setup_screenindex_uniform(screen); } bool bgfx_chain_entry::setup_view(int view, uint16_t screen_width, uint16_t screen_height, int32_t screen) const diff --git a/src/osd/modules/render/bgfx/chainentry.h b/src/osd/modules/render/bgfx/chainentry.h index a80fc8656c0..69fbb34d7e8 100644 --- a/src/osd/modules/render/bgfx/chainentry.h +++ b/src/osd/modules/render/bgfx/chainentry.h @@ -49,6 +49,7 @@ private: void setup_rotationtype_uniform(uint32_t rotation_type) const; void setup_swapxy_uniform(bool swap_xy) const; void setup_quaddims_uniform(render_primitive* prim) const; + void setup_screenindex_uniform(int32_t screen) const; bool setup_view(int view, uint16_t screen_width, uint16_t screen_height, int32_t screen) const; void put_screen_buffer(render_primitive* prim, bgfx::TransientVertexBuffer* buffer) const; diff --git a/src/osd/modules/render/bgfx/shaders/fs_deconverge.sc b/src/osd/modules/render/bgfx/shaders/fs_deconverge.sc index d58e1bf6df9..b23e24951c3 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_deconverge.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_deconverge.sc @@ -1,4 +1,4 @@ -$input v_color0, v_texcoord0, v_texcoord1, v_texcoord2 +$input v_color0, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3 // license:BSD-3-Clause // copyright-holders:Ryan Holtz,ImJezze @@ -13,8 +13,9 @@ SAMPLER2D(s_tex, 0); void main() { - float r = texture2D(s_tex, v_texcoord0).r; - float g = texture2D(s_tex, v_texcoord1).g; - float b = texture2D(s_tex, v_texcoord2).b; - gl_FragColor = vec4(r, g, b, 1.0) * v_color0; + float a = texture2D(s_tex, v_texcoord0).a; + float r = texture2D(s_tex, v_texcoord1).r; + float g = texture2D(s_tex, v_texcoord2).g; + float b = texture2D(s_tex, v_texcoord3).b; + gl_FragColor = vec4(r, g, b, a) * v_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/fs_defocus.sc b/src/osd/modules/render/bgfx/shaders/fs_defocus.sc index 44ca7a93612..c9e76990f3f 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_defocus.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_defocus.sc @@ -46,5 +46,6 @@ void main() vec4 blurred = (d0 + d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8) / 9.0; - gl_FragColor = vec4(blurred.rgb, 1.0) * v_color0; + blurred.a = blurred.a + d0.a; + gl_FragColor = blurred * v_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/fs_distortion.sc b/src/osd/modules/render/bgfx/shaders/fs_distortion.sc index 1b93578a2cf..8f4efa04cd3 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_distortion.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_distortion.sc @@ -188,33 +188,36 @@ void main() // Color vec4 BaseColor = texture2D(s_tex, BaseCoord); - BaseColor.a = 1.0; // Clamp if (BaseCoord.x > 1.0 || BaseCoord.y > 1.0 || BaseCoord.x < 0.0 || BaseCoord.y < 0.0) - BaseColor.rgb = vec3(0.0, 0.0, 0.0); - - // Vignetting Simulation - vec2 VignetteCoord = BaseCoordCentered; + { + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + } + else + { + // Vignetting Simulation + vec2 VignetteCoord = BaseCoordCentered; - float VignetteFactor = GetVignetteFactor(VignetteCoord, u_vignetting.x); - BaseColor.rgb *= VignetteFactor; + float VignetteFactor = GetVignetteFactor(VignetteCoord, u_vignetting.x); + BaseColor.rgb *= VignetteFactor; - // Light Reflection Simulation - vec3 LightColor = vec3(1.0, 0.90, 0.80); // color temperature 5.000 Kelvin + // Light Reflection Simulation + vec4 LightColor = vec4(1.0, 0.90, 0.80, 1.0); // color temperature 5.000 Kelvin - vec2 SpotCoord = BaseCoordCentered; - vec2 NoiseCoord = BaseCoordCentered; + vec2 SpotCoord = BaseCoordCentered; + vec2 NoiseCoord = BaseCoordCentered; - float SpotAddend = GetSpotAddend(SpotCoord, u_reflection.x); - float NoiseFactor = GetNoiseFactor(SpotAddend, rand(NoiseCoord)); - BaseColor.rgb += SpotAddend * NoiseFactor * LightColor; + float SpotAddend = GetSpotAddend(SpotCoord, u_reflection.x); + float NoiseFactor = GetNoiseFactor(SpotAddend, rand(NoiseCoord)); + BaseColor += SpotAddend * NoiseFactor * LightColor; - // Round Corners Simulation - vec2 RoundCornerCoord = BaseCoordCentered; + // Round Corners Simulation + vec2 RoundCornerCoord = BaseCoordCentered; - float roundCornerFactor = GetRoundCornerFactor(RoundCornerCoord, u_round_corner.x, u_smooth_border.x); - BaseColor.rgb *= roundCornerFactor; + float roundCornerFactor = GetRoundCornerFactor(RoundCornerCoord, u_round_corner.x, u_smooth_border.x); + BaseColor.rgb *= roundCornerFactor; - gl_FragColor = BaseColor; + gl_FragColor = BaseColor; + } } diff --git a/src/osd/modules/render/bgfx/shaders/fs_ntsc_decode.sc b/src/osd/modules/render/bgfx/shaders/fs_ntsc_decode.sc index dda326cd692..1c6a53fba29 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_ntsc_decode.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_ntsc_decode.sc @@ -28,6 +28,7 @@ uniform vec4 u_jitter_amount; // Samplers SAMPLER2D(s_tex, 0); +SAMPLER2D(s_screen, 1); //----------------------------------------------------------------------------- // Constants @@ -35,7 +36,7 @@ SAMPLER2D(s_tex, 0); void main() { - vec4 BaseTexel = texture2D(s_tex, v_texcoord0.xy); + vec4 BaseTexel = texture2D(s_screen, v_texcoord0.xy); vec4 zero = vec4(0.0, 0.0, 0.0, 0.0); vec4 quarter = vec4(0.25, 0.25, 0.25, 0.25); diff --git a/src/osd/modules/render/bgfx/shaders/fs_post.sc b/src/osd/modules/render/bgfx/shaders/fs_post.sc index eab3b909909..27c71a61eba 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_post.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_post.sc @@ -1,4 +1,4 @@ -$input v_color0, v_texcoord0, v_texcoord1 +$input v_color0, v_texcoord0 // license:BSD-3-Clause // copyright-holders:Ryan Holtz,ImJezze @@ -101,7 +101,6 @@ void main() // Color vec4 BaseColor = texture2D(s_tex, BaseCoord); - BaseColor.a = 1.0; if (BaseCoord.x < 0.0 || BaseCoord.y < 0.0) { @@ -123,7 +122,7 @@ void main() // 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 BaseColor.r = pow(BaseColor.r, u_power.r); BaseColor.g = pow(BaseColor.g, u_power.g); @@ -155,5 +154,5 @@ void main() BaseColor.rgb *= HumBrightness; } - gl_FragColor = vec4(BaseColor.rgb * v_color0.rgb, 1.0); + gl_FragColor = vec4(BaseColor.rgb * v_color0.rgb, BaseColor.a); } diff --git a/src/osd/modules/render/bgfx/shaders/fs_prescale.sc b/src/osd/modules/render/bgfx/shaders/fs_prescale.sc index 48d177b19fa..1d8370dacf4 100644 --- a/src/osd/modules/render/bgfx/shaders/fs_prescale.sc +++ b/src/osd/modules/render/bgfx/shaders/fs_prescale.sc @@ -26,5 +26,5 @@ void main() vec2 TexCoord = (i + f) / u_source_dims.xy; - gl_FragColor = texture2D(s_tex, TexCoord) * v_color0; + gl_FragColor = texture2D(s_tex, v_texcoord0.xy) * v_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/varying.def.sc b/src/osd/modules/render/bgfx/shaders/varying.def.sc index 95b607539a7..4bbc09efebe 100644 --- a/src/osd/modules/render/bgfx/shaders/varying.def.sc +++ b/src/osd/modules/render/bgfx/shaders/varying.def.sc @@ -2,6 +2,7 @@ vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); vec2 v_texcoord1 : TEXCOORD1 = vec2(0.0, 0.0); vec2 v_texcoord2 : TEXCOORD2 = vec2(0.0, 0.0); +vec2 v_texcoord3 : TEXCOORD3 = vec2(0.0, 0.0); vec3 v_pos : TEXCOORD3 = vec3(0.0, 0.0, 0.0); vec3 a_position : POSITION; diff --git a/src/osd/modules/render/bgfx/shaders/vs_deconverge.sc b/src/osd/modules/render/bgfx/shaders/vs_deconverge.sc index 6e13814c89b..b714f84e4a6 100644 --- a/src/osd/modules/render/bgfx/shaders/vs_deconverge.sc +++ b/src/osd/modules/render/bgfx/shaders/vs_deconverge.sc @@ -1,5 +1,5 @@ $input a_position, a_texcoord0, a_color0 -$output v_color0, v_texcoord0, v_texcoord1, v_texcoord2 +$output v_color0, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3 // license:BSD-3-Clause // copyright-holders:Dario Manesku @@ -23,9 +23,10 @@ void main() vec2 half_value = vec2(0.5, 0.5); - v_texcoord0 = (a_texcoord0 - half_value) * (1.0 + u_radial_converge_red.xy ) + half_value + u_converge_red.xy * (vec2(1.0, 1.0) / u_source_size.xy); - v_texcoord1 = (a_texcoord0 - half_value) * (1.0 + u_radial_converge_green.xy) + half_value + u_converge_green.xy * (vec2(1.0, 1.0) / u_source_size.xy); - v_texcoord2 = (a_texcoord0 - half_value) * (1.0 + u_radial_converge_blue.xy ) + half_value + u_converge_blue.xy * (vec2(1.0, 1.0) / u_source_size.xy); + v_texcoord0 = a_texcoord0; + v_texcoord1 = (a_texcoord0 - half_value) * (1.0 + u_radial_converge_red.xy ) + half_value + u_converge_red.xy * (vec2(1.0, 1.0) / u_source_size.xy); + v_texcoord2 = (a_texcoord0 - half_value) * (1.0 + u_radial_converge_green.xy) + half_value + u_converge_green.xy * (vec2(1.0, 1.0) / u_source_size.xy); + v_texcoord3 = (a_texcoord0 - half_value) * (1.0 + u_radial_converge_blue.xy ) + half_value + u_converge_blue.xy * (vec2(1.0, 1.0) / u_source_size.xy); v_color0 = a_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/vs_post.sc b/src/osd/modules/render/bgfx/shaders/vs_post.sc index fcc643b4c8f..fd37320eefb 100644 --- a/src/osd/modules/render/bgfx/shaders/vs_post.sc +++ b/src/osd/modules/render/bgfx/shaders/vs_post.sc @@ -1,19 +1,14 @@ $input a_position, a_texcoord0, a_color0 -$output v_texcoord0, v_texcoord1, v_color0 +$output v_texcoord0, v_color0 // license:BSD-3-Clause // copyright-holders:Dario Manesku #include "../../../../../../3rdparty/bgfx/examples/common/common.sh" -// 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_texcoord0.xy * u_source_dims.xy / u_screen_dims.x; v_color0 = a_color0; } diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp index d955f8c76f2..8389d59cfad 100644 --- a/src/osd/modules/render/drawbgfx.cpp +++ b/src/osd/modules/render/drawbgfx.cpp @@ -763,17 +763,33 @@ int renderer_bgfx::handle_screen_chains() // Determine how many post-processing passes are needed int screens = 0; + int total_screen_textures = 0; + std::vector bases; while (prim != nullptr) { if (PRIMFLAG_GET_SCREENTEX(prim->flags)) { - screens++; + total_screen_textures++; + bool found = false; + for (void* base : bases) + { + if (base == prim->texture.base) + { + found = true; + break; + } + } + if (!found) + { + screens++; + bases.push_back(prim->texture.base); + } } prim = prim->next(); } const uint32_t available_chains = m_screen_chains[window().m_index].size(); - screens = screens >= available_chains ? available_chains: screens; + screens = screens >= available_chains ? available_chains : screens; if (screens > 0) { @@ -827,6 +843,7 @@ int renderer_bgfx::draw(int update) s_current_view = 0; } + m_seen_views.clear(); m_ui_view = -1; // Set view 0 default viewport. @@ -857,7 +874,7 @@ int renderer_bgfx::draw(int update) bool atlas_valid = update_atlas(); render_primitive *prim = window().m_primlist->first(); - std::vector screens; + std::vector sources; while (prim != nullptr) { UINT32 blend = PRIMFLAG_GET_BLENDMODE(prim->flags); @@ -868,16 +885,16 @@ int renderer_bgfx::draw(int update) int32_t screen = -1; if (PRIMFLAG_GET_SCREENTEX(prim->flags)) { - for (screen = 0; screen < screens.size(); screen++) + for (screen = 0; screen < sources.size(); screen++) { - if (screens[screen] == prim->container->screen()) + if (sources[screen] == prim->texture.base) { break; } } - if (screen == screens.size()) + if (screen == sources.size()) { - screens.push_back(prim->container->screen()); + sources.push_back(prim->texture.base); } } @@ -966,8 +983,17 @@ void renderer_bgfx::setup_view(uint32_t view_index, bool screen) #if SCENE_VIEW if (view_index == m_max_view) -#endif { +#else + while ((view_index + 1) > m_seen_views.size()) + { + m_seen_views.push_back(false); + } + + if (!m_seen_views[view_index]) + { + m_seen_views[view_index] = true; +#endif bgfx::setViewClear(view_index, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0); } diff --git a/src/osd/modules/render/drawbgfx.h b/src/osd/modules/render/drawbgfx.h index 823472f5c4a..30976a7fb76 100644 --- a/src/osd/modules/render/drawbgfx.h +++ b/src/osd/modules/render/drawbgfx.h @@ -115,6 +115,7 @@ private: bgfx_effect* m_gui_effect[4]; bgfx_effect* m_screen_effect[4]; std::vector> m_screen_chains; + std::vector m_seen_views; std::map m_hash_to_entry; std::vector m_texinfo;