From cdee786a5d7f04a882dc93617f4c164cd5691c5a Mon Sep 17 00:00:00 2001 From: "therealmogminer@gmail.com" Date: Thu, 25 Feb 2016 03:22:14 +0100 Subject: [PATCH] Fix up a few things in chain JSON loading, nw --- bgfx/chains/test.json | 30 ++++---- bgfx/effects/blit.json | 22 ++++++ bgfx/effects/phosphor.json | 25 +++++++ bgfx/effects/ratios.json | 26 +++++++ bgfx/effects/tint.json | 24 +++++++ shaders/dx11/fs_blit.bin | Bin 0 -> 396 bytes shaders/dx11/fs_phosphor.bin | Bin 0 -> 678 bytes shaders/dx11/fs_ratios.bin | Bin 0 -> 658 bytes shaders/dx11/fs_tint.bin | Bin 0 -> 503 bytes shaders/dx11/vs_blit.bin | Bin 0 -> 575 bytes shaders/dx11/vs_phosphor.bin | Bin 0 -> 575 bytes shaders/dx11/vs_ratios.bin | Bin 0 -> 575 bytes shaders/dx11/vs_tint.bin | Bin 0 -> 575 bytes shaders/dx9/fs_blit.bin | Bin 0 -> 237 bytes shaders/dx9/fs_phosphor.bin | Bin 0 -> 507 bytes shaders/dx9/fs_ratios.bin | Bin 0 -> 547 bytes shaders/dx9/fs_tint.bin | Bin 0 -> 368 bytes shaders/dx9/vs_blit.bin | Bin 0 -> 326 bytes shaders/dx9/vs_phosphor.bin | Bin 0 -> 326 bytes shaders/dx9/vs_ratios.bin | Bin 0 -> 326 bytes shaders/dx9/vs_tint.bin | Bin 0 -> 326 bytes shaders/gles/fs_blit.bin | Bin 0 -> 238 bytes shaders/gles/fs_phosphor.bin | Bin 0 -> 599 bytes shaders/gles/fs_ratios.bin | Bin 0 -> 745 bytes shaders/gles/fs_tint.bin | Bin 0 -> 346 bytes shaders/gles/vs_blit.bin | Bin 0 -> 419 bytes shaders/gles/vs_phosphor.bin | Bin 0 -> 419 bytes shaders/gles/vs_ratios.bin | Bin 0 -> 419 bytes shaders/gles/vs_tint.bin | Bin 0 -> 419 bytes shaders/glsl/fs_blit.bin | Bin 0 -> 181 bytes shaders/glsl/fs_phosphor.bin | Bin 0 -> 520 bytes shaders/glsl/fs_ratios.bin | Bin 0 -> 694 bytes shaders/glsl/fs_tint.bin | Bin 0 -> 277 bytes shaders/glsl/vs_blit.bin | Bin 0 -> 377 bytes shaders/glsl/vs_phosphor.bin | Bin 0 -> 377 bytes shaders/glsl/vs_ratios.bin | Bin 0 -> 377 bytes shaders/glsl/vs_tint.bin | Bin 0 -> 377 bytes shaders/metal/fs_blit.bin | Bin 0 -> 634 bytes shaders/metal/fs_phosphor.bin | Bin 0 -> 1066 bytes shaders/metal/fs_ratios.bin | Bin 0 -> 1116 bytes shaders/metal/fs_tint.bin | Bin 0 -> 753 bytes shaders/metal/vs_blit.bin | Bin 0 -> 757 bytes shaders/metal/vs_phosphor.bin | Bin 0 -> 757 bytes shaders/metal/vs_ratios.bin | Bin 0 -> 757 bytes shaders/metal/vs_tint.bin | Bin 0 -> 757 bytes src/osd/modules/render/bgfx/chain.cpp | 12 ++++ src/osd/modules/render/bgfx/chainmanager.cpp | 66 ++++++++++++++++++ src/osd/modules/render/bgfx/chainmanager.h | 54 ++++++++++++++ src/osd/modules/render/bgfx/chainreader.cpp | 4 ++ src/osd/modules/render/bgfx/fs_blit.sc | 13 ++++ src/osd/modules/render/bgfx/fs_phosphor.sc | 20 ++++++ src/osd/modules/render/bgfx/fs_ratios.sc | 23 ++++++ src/osd/modules/render/bgfx/fs_tint.sc | 16 +++++ src/osd/modules/render/bgfx/target.h | 1 + src/osd/modules/render/bgfx/targetmanager.cpp | 2 - src/osd/modules/render/bgfx/texture.h | 1 + .../modules/render/bgfx/texturemanager.cpp | 5 +- src/osd/modules/render/bgfx/vs_blit.sc | 14 ++++ src/osd/modules/render/bgfx/vs_phosphor.sc | 14 ++++ src/osd/modules/render/bgfx/vs_ratios.sc | 14 ++++ src/osd/modules/render/bgfx/vs_tint.sc | 14 ++++ src/osd/modules/render/drawbgfx.cpp | 10 ++- src/osd/modules/render/drawbgfx.h | 5 ++ 63 files changed, 395 insertions(+), 20 deletions(-) create mode 100644 bgfx/effects/blit.json create mode 100644 bgfx/effects/phosphor.json create mode 100644 bgfx/effects/ratios.json create mode 100644 bgfx/effects/tint.json create mode 100644 shaders/dx11/fs_blit.bin create mode 100644 shaders/dx11/fs_phosphor.bin create mode 100644 shaders/dx11/fs_ratios.bin create mode 100644 shaders/dx11/fs_tint.bin create mode 100644 shaders/dx11/vs_blit.bin create mode 100644 shaders/dx11/vs_phosphor.bin create mode 100644 shaders/dx11/vs_ratios.bin create mode 100644 shaders/dx11/vs_tint.bin create mode 100644 shaders/dx9/fs_blit.bin create mode 100644 shaders/dx9/fs_phosphor.bin create mode 100644 shaders/dx9/fs_ratios.bin create mode 100644 shaders/dx9/fs_tint.bin create mode 100644 shaders/dx9/vs_blit.bin create mode 100644 shaders/dx9/vs_phosphor.bin create mode 100644 shaders/dx9/vs_ratios.bin create mode 100644 shaders/dx9/vs_tint.bin create mode 100644 shaders/gles/fs_blit.bin create mode 100644 shaders/gles/fs_phosphor.bin create mode 100644 shaders/gles/fs_ratios.bin create mode 100644 shaders/gles/fs_tint.bin create mode 100644 shaders/gles/vs_blit.bin create mode 100644 shaders/gles/vs_phosphor.bin create mode 100644 shaders/gles/vs_ratios.bin create mode 100644 shaders/gles/vs_tint.bin create mode 100644 shaders/glsl/fs_blit.bin create mode 100644 shaders/glsl/fs_phosphor.bin create mode 100644 shaders/glsl/fs_ratios.bin create mode 100644 shaders/glsl/fs_tint.bin create mode 100644 shaders/glsl/vs_blit.bin create mode 100644 shaders/glsl/vs_phosphor.bin create mode 100644 shaders/glsl/vs_ratios.bin create mode 100644 shaders/glsl/vs_tint.bin create mode 100644 shaders/metal/fs_blit.bin create mode 100644 shaders/metal/fs_phosphor.bin create mode 100644 shaders/metal/fs_ratios.bin create mode 100644 shaders/metal/fs_tint.bin create mode 100644 shaders/metal/vs_blit.bin create mode 100644 shaders/metal/vs_phosphor.bin create mode 100644 shaders/metal/vs_ratios.bin create mode 100644 shaders/metal/vs_tint.bin create mode 100644 src/osd/modules/render/bgfx/chainmanager.cpp create mode 100644 src/osd/modules/render/bgfx/chainmanager.h create mode 100644 src/osd/modules/render/bgfx/fs_blit.sc create mode 100644 src/osd/modules/render/bgfx/fs_phosphor.sc create mode 100644 src/osd/modules/render/bgfx/fs_ratios.sc create mode 100644 src/osd/modules/render/bgfx/fs_tint.sc create mode 100644 src/osd/modules/render/bgfx/vs_blit.sc create mode 100644 src/osd/modules/render/bgfx/vs_phosphor.sc create mode 100644 src/osd/modules/render/bgfx/vs_ratios.sc create mode 100644 src/osd/modules/render/bgfx/vs_tint.sc diff --git a/bgfx/chains/test.json b/bgfx/chains/test.json index d5b815ca3fc..bc5603a18f2 100644 --- a/bgfx/chains/test.json +++ b/bgfx/chains/test.json @@ -1,5 +1,5 @@ -{ "name": "Test Shader Chain" - "author": "Ryan Holtz" +{ "name": "Test Shader Chain", + "author": "Ryan Holtz", "sliders": [ { "type": "bool", "name": "adjustments", "text": "Enable Adjustments", "default": false }, { "type": "float", "name": "ratio_amount", "text": "Ratio Amount", "default": 0, "max": 1, "min": 0 }, @@ -7,25 +7,25 @@ { "type": "color", "name": "red_ratios", "text": "Red Amount", "default": [ 1, 0, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] }, { "type": "color", "name": "grn_ratios", "text": "Green Amount", "default": [ 0, 1, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] }, { "type": "color", "name": "blu_ratios", "text": "Blue Amount", "default": [ 0, 0, 1 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] }, - { "type": "color", "name": "tint": "text": "Tint", "default": [ 1, 1, 1 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] } - { "type": "color", "name": "phosphor", "text": "Phosphor Amount", "default": [ 0, 0, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0 ,0 ] }, + { "type": "color", "name": "tint", "text": "Tint", "default": [ 1, 1, 1 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] }, + { "type": "color", "name": "phosphor", "text": "Phosphor Amount", "default": [ 0, 0, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] }, { "type": "vec2", "name": "shift", "text": "Frame Shift", "default": [ 0, 0 ], "max": [ 25, 25 ], "min": [ -25, -25 ] } - ] + ], "parameters": [ { "name": "alternating", "type": "frame_mask", "period": 2 } - ] + ], "targets": [ { "name": "native", - "screen": true, + "screen": true }, { "name": "previous", "screen": true, "prescale": true } - ] + ], "passes": [ { "effect": "ratios", - "name": "Matrix Pass" + "name": "Matrix Pass", "disable_conditions": [ { "type": "slider", "name": "adjustments", "value": false }, { "type": "slider", "name": "ratio_amount", "value": 0 } @@ -42,7 +42,7 @@ "output": "native" }, { "effect": "tint", - "name": "Tint Pass" + "name": "Tint Pass", "disable_conditions": [ { "type": "slider", "name": "adjustments", "value": false } ], @@ -55,14 +55,14 @@ ], "output": "native" }, - { "effect": "phosphor" + { "effect": "phosphor", "name": "Phosphor Decay", "disable_conditions": [ { "type": "slider", "name": "adjustments", "value": false }, { "type": "slider", "name": "phosphor", "value": [ 0, 0, 0 ] } ], "uniforms": [ - { "name": "u_passthrough", "value": [ 0.0f ] }, + { "name": "u_passthrough", "value": [ 0 ] }, { "name": "u_phosphor", "slider": "phosphor" } ], "input": [ @@ -71,14 +71,14 @@ ], "output": "native" }, - { "effect": "phosphor" + { "effect": "phosphor", "name": "Phosphor Store", "disable_conditions": [ { "type": "slider", "name": "adjustments", "value": false }, { "type": "slider", "name": "phosphor", "value": [ 0, 0, 0 ] } ], "uniforms": [ - { "name": "u_passthrough", "value": [ 1.0f ] }, + { "name": "u_passthrough", "value": [ 1 ] }, { "name": "u_phosphor", "slider": "phosphor" } ], "input": [ @@ -87,7 +87,7 @@ ], "output": "previous" }, - { "effect": "blit" + { "effect": "blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "texture": "native" } diff --git a/bgfx/effects/blit.json b/bgfx/effects/blit.json new file mode 100644 index 00000000000..2d2d281df62 --- /dev/null +++ b/bgfx/effects/blit.json @@ -0,0 +1,22 @@ +{ + "blend": { + "equation": "add", + "srcColor": "srcAlpha", + "dstColor": "1-srcAlpha", + "srcAlpha": "srcAlpha", + "dstAlpha": "1-srcAlpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": "true", + "alpha": "true" + }, + "vertex": "vs_blit", + "fragment": "fs_blit", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/phosphor.json b/bgfx/effects/phosphor.json new file mode 100644 index 00000000000..0efbad997de --- /dev/null +++ b/bgfx/effects/phosphor.json @@ -0,0 +1,25 @@ +{ + "blend": { + "equation": "add", + "srcColor": "srcAlpha", + "dstColor": "1-srcAlpha", + "srcAlpha": "srcAlpha", + "dstAlpha": "1-srcAlpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": "true", + "alpha": "true" + }, + "vertex": "vs_phosphor", + "fragment": "fs_phosphor", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "s_prev", "type": "int", "values": [ 1.0 ] }, + { "name": "u_passthrough", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_phosphor", "type": "vec4", "values": [ 0.7, 0.7, 0.7, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/ratios.json b/bgfx/effects/ratios.json new file mode 100644 index 00000000000..0949172b0c9 --- /dev/null +++ b/bgfx/effects/ratios.json @@ -0,0 +1,26 @@ +{ + "blend": { + "equation": "add", + "srcColor": "srcAlpha", + "dstColor": "1-srcAlpha", + "srcAlpha": "srcAlpha", + "dstAlpha": "1-srcAlpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": "true", + "alpha": "true" + }, + "vertex": "vs_ratios", + "fragment": "fs_ratios", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_red_ratios", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 1.0 ] }, + { "name": "u_grn_ratios", "type": "vec4", "values": [ 0.0, 1.0, 0.0, 1.0 ] }, + { "name": "u_blu_ratios", "type": "vec4", "values": [ 0.0, 0.0, 1.0, 1.0 ] }, + { "name": "u_ratio_amount", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/tint.json b/bgfx/effects/tint.json new file mode 100644 index 00000000000..19cd7687f15 --- /dev/null +++ b/bgfx/effects/tint.json @@ -0,0 +1,24 @@ +{ + "blend": { + "equation": "add", + "srcColor": "srcAlpha", + "dstColor": "1-srcAlpha", + "srcAlpha": "srcAlpha", + "dstAlpha": "1-srcAlpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": "true", + "alpha": "true" + }, + "vertex": "vs_tint", + "fragment": "fs_tint", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_tint", "type": "vec4", "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "u_shift", "type": "vec4", "values": [ 0.1, 0.1, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/shaders/dx11/fs_blit.bin b/shaders/dx11/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..80d85fb110742d3ae2415a237aee617a3e0c7b8c GIT binary patch literal 396 zcmZ<@_F!Rb{`8QMfwefkB(=hTk%57cp@7jP!pV7G#q*_-JO!_PHm;EuYk4^xC+ix2P*_6+g#_hWGO_wf&62yu;Y_V*8RVOZ@Cv=ih8kQpF56@VB9knIGT5#ku+ z?i#|ddUddeOVAXcA_pK=1>z`>^AZGrECz-M2?iF10th=a6zC=a2Ifx!0$}q&Y$G5W zz^lB5zvh!%=n2(3vgE<{RQ3T}1j zzMtR+_yhiczmT1R;F;V6iw>OJxo6ItnH$||$kKiAA=C229i99Bc;F2u7lQ&3Nt6RO z82W%$AQeQ)cgOvkqQu3t?~c6wby1RVaS~PMprTwUt=8+?_w&Qk=la^l7j&o)C2?*7 zFTgv{wCe3koXlr|4#2^B<~S7KG|a?@d9Euc^#1S|K}iU#Be!E%O}lBdsbU-&CfPNo zVi;zX<_2c+4(!1*H6V_~need7X1!+9d~P+W<}DibA#{ObB3XabkP-3B6JGaB4exQz z{>}=?G!lHb`+Mga-+L-01C@WM$VT1FBcLN zq8RoZ@B(}ShE;F5*qK*=Ho(Dt<~Y*8Ns!5fdDhbq`fEH|Pz(m^&}j?Hunp0oif9Ux z>{_=XgjuD9Ku?~5Yj95uSjK8k)UZoty=K#5VKu5|6BmjwTEG!eTz}S(Apwqg+*36; zcXvRIW!~vvMwMc|%C9N&0&<>nfIGe>eHTPg=4wP+K3<+f4}JQbJTL3xq{zPmPc-yC zXu%!s!TKIn&ewJB!Fu^0J^X&f`_t#8pt7vRH48-BtaEJ4wP5Fkd#(1|C)!+opPmZm M+?Ae#;Q5R61BIMU=>Px# literal 0 HcmV?d00001 diff --git a/shaders/dx11/fs_tint.bin b/shaders/dx11/fs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..eca7aa371a11ac125948dec761acaf2842a4e1f0 GIT binary patch literal 503 zcmZ8dJxjw-6ut4qwk|d}IY~x`4$?^%QS;FTw67$oL=hrFwFMEODL9A-PA<+JU7WHz z`y+I56Wo>j0?*CM6Y;`%_v4&*@8$YY*EH^m4?(qQnvE~AB_cAYK20a1@hLJ3+59BU zhF5C_GcSgl>^QCO=lkn-QG1)sR` zUQBr&b=~k2qAg$pI3P0p2OAL)&phOHkF7FKmdT_`6%Pj3(IQb;d?yvR5%ZrR{uH*- zjnIa9Sfh=bviX(HzqQMpd5>tJ(7g6HO0VayqsOmivFcUr%8kI+^;}=`D{8;Z@+>y} E0A*J^=l}o! literal 0 HcmV?d00001 diff --git a/shaders/dx11/vs_blit.bin b/shaders/dx11/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/shaders/dx11/vs_phosphor.bin b/shaders/dx11/vs_phosphor.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/shaders/dx11/vs_ratios.bin b/shaders/dx11/vs_ratios.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/shaders/dx11/vs_tint.bin b/shaders/dx11/vs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/shaders/dx9/fs_blit.bin b/shaders/dx9/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ee2b018cae82bd2769b9d9aa81d307a1778fd0c8 GIT binary patch literal 237 zcmX9&OA3Ne6g{t}5D~b6Ae+@h-lIv=6vBZKWOIo!5(-5fGz{8+?ZCO)X#;^PXaT+M zvwJz5bI<*7SD|mP$LGyp7Eu}B1Opge09Wd(Ch&GkcLZQV&>pp+Ydis;NDw%Ip@#*r zj_wee#=ww#o&U&+XdVfylS7^s>8Z4*+nMbLVPJ>n{V~pMFTG~Tg@hE2aHJ4YIs(lY o=na57U{zY1q#1ap>2ig>RlD6A7WpmJZA~+reA;O>Dy3-h2i&qS;s5{u literal 0 HcmV?d00001 diff --git a/shaders/dx9/fs_phosphor.bin b/shaders/dx9/fs_phosphor.bin new file mode 100644 index 0000000000000000000000000000000000000000..4efb78ecae0f0bd98543ba35bc8d84f50745cacc GIT binary patch literal 507 zcmZWly-EW?7@Xa^#1NH0YQZbD348biNkCG>#@HW0qZf$WaeEQVfR+}qx41qQc>sGm z-$A%1@BuvM+XzAYVA$E2?`OX~9SwZ-@b&4VZlg4t+!>{yP_t1!xi<>r`|~IrTbsvO zGQWx2PHR$&6H8=mSFl#_s_MJyqJPot9RT^VpBCENyB{nP(!L!S?4o$uyI-F7piHadw6&Zd`H zVw3AUI66NL2E)-X7{%kONfz{z+jKf32~EdzLSw?PW7zYM&ujt}^fi5Yzd6tv4c@Co8(fCD01ELn;rca1 KD+SA{qWc3hY-DHv literal 0 HcmV?d00001 diff --git a/shaders/dx9/fs_ratios.bin b/shaders/dx9/fs_ratios.bin new file mode 100644 index 0000000000000000000000000000000000000000..8bd9eed37bb6d140c587b985b770c9bdbab8f14e GIT binary patch literal 547 zcmYk2ze)o^5XQgVyI_#uL2AJ(wF!Ip1SX&x!qJRSmU7r=v$D0D(rPZ^oI92Wc23P2p_N zeLSs@BswT7^k5QY)3o{D8jprmonYOEfKwE|#RWRoXYE4(-!#K&bVlO^SkdJ)hbAEL zOmEIBO_K8Ocr$?KohJG1vQNuQ@3!vCGV_KlvtwepbkQK+eq>{hr@{7z{_T--#x(aLgc3E!7H?3WAox z5l7m$EAZwf=5BJn!N$CQj=HyK+x2+lYwGo)PR$8&U~O2brPZ?1uGJ286L2N=sIg$Z X<=l;ws535d-s$k3oV_MDFA4yEMly84 literal 0 HcmV?d00001 diff --git a/shaders/dx9/fs_tint.bin b/shaders/dx9/fs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..aa19e6def30699f5d8cd13601086e03299eab0e8 GIT binary patch literal 368 zcmYjMJxjw-6g@95wLye{vtUMD!V6tpY(YBI#W=XVincVMCNwE@EV#HC7w7E#RYHD2 ze}M7aXAv(P?mg#zyz{Qov9DftUmCsARv-u0bRtF* literal 0 HcmV?d00001 diff --git a/shaders/dx9/vs_blit.bin b/shaders/dx9/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..c071222605bc75cbc3664b3f6babcdc8f85c5faa GIT binary patch literal 326 zcmYjLJ8r^I5S;f(L&F6kVNsFBdKPUOprJ4liW6E3@ez)KjLfe^;sWLd^jykFoFE6l z%tE4M^+r3pJ3DU&QP-;d_gSH`jyK6<+t1QZs{o6Jg1MI0vX0JstNjchBBaMLq{aaV znH-@BOS}>ie{MJ#7|twYPhzu-o3TSL8D;4*ovysb+l$u?qtJ_H!|^2ZI_Z3oe31ms zcYfep5cm$K8o#LkJD{2ir`1mV@F#NpuTM?!tEcA99~x6I8_v0VIVybQyqm8|U#XEZ Z)9bD&gqufSix2CZ8m(apOie{MJ#7|twYPhzu-o3TSL8D;4*ovysb+l$u?qtJ_H!|^2ZI_Z3oe31ms zcYfep5cm$K8o#LkJD{2ir`1mV@F#NpuTM?!tEcA99~x6I8_v0VIVybQyqm8|U#XEZ Z)9bD&gqufSix2CZ8m(apOie{MJ#7|twYPhzu-o3TSL8D;4*ovysb+l$u?qtJ_H!|^2ZI_Z3oe31ms zcYfep5cm$K8o#LkJD{2ir`1mV@F#NpuTM?!tEcA99~x6I8_v0VIVybQyqm8|U#XEZ Z)9bD&gqufSix2CZ8m(apOie{MJ#7|twYPhzu-o3TSL8D;4*ovysb+l$u?qtJ_H!|^2ZI_Z3oe31ms zcYfep5cm$K8o#LkJD{2ir`1mV@F#NpuTM?!tEcA99~x6I8_v0VIVybQyqm8|U#XEZ Z)9bD&gqufSix2CZ8m(apORfbykznQ8e&xeCRJxdl0?MMf?PVAFvb^D|QvauYN26f`us zs<{*ta`MZerkCUv0F8||v<8a8*b24^KvPRfi&B9`Xn@VoLAFT~q&Ph%-mNGx-5KOI Spau=NW-Yjjf$D0xxEKI9`Arc3 literal 0 HcmV?d00001 diff --git a/shaders/gles/fs_phosphor.bin b/shaders/gles/fs_phosphor.bin new file mode 100644 index 0000000000000000000000000000000000000000..9ebdaa8f4cebccf21b31818b7e1eb6f9ff154f55 GIT binary patch literal 599 zcmZ{iO>ToQ5QR;Yc44V^m?cCAwWhnMt5#9>J%D8qiY);~Hh*c=RZrS0^aLFf2t-LG zknnpmZ$4|-y}hoz@86#_xodbOtgWTdO(s_!As(TqNp0~pN8!fuI_=TH=hpJdr0wxQ zSA?{}98{TsRGF-xO_N7xd7^V|?zi;9WN2bmqP5wh-<0ZIn_}5~2J~OWh&S6-6jh!Y z_5uUzb;E%plU92uget)g=qClpbvJ_7MTNxtVTp0Av*pYJufsi+^^jJWhL_4TyBr~b*_U;83Ac*ovN);ns<@`-5VT=EVU7}3U7YK8a z1;SiwCX`GRS)zg`7&>Bn$zu?V=iqJJcNZX&&Dc?k0?X0+Jx*y5tvjD)-6& literal 0 HcmV?d00001 diff --git a/shaders/gles/fs_tint.bin b/shaders/gles/fs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..a0863060977148c9364aa595033d5f09620435e8 GIT binary patch literal 346 zcmZ{gOA5j;5QbBqkW;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN z8v%uZT9Whgi&B6xrFofY`9--3#fiBEIjKcPE(%~1fm-r2QxtL&GxHQQG`Xs|6co~P r;@yf8)15&^D%dJ$01YWAElLII&;V=EK{i-ZK?`oZrZrbB7Z(Enmi{^a literal 0 HcmV?d00001 diff --git a/shaders/glsl/fs_phosphor.bin b/shaders/glsl/fs_phosphor.bin new file mode 100644 index 0000000000000000000000000000000000000000..5996130d7304dc45e959080dfe02f23006e45639 GIT binary patch literal 520 zcmZvZL286B7=>e*b`j_u{-q8gZRl?3YKEcv9v}qAYQPvt)Nxw6>alv7UZE%GpQxil z2NcYE`QQ6Y_OCCi;OqBiMebW(3u~Lg=r%8I0zv{pQ7g2?*9^j~I&CH2v{A#rMg4zo#Fz~$R9$9&;8PHzMDgERMLdfO(`s_@#K^G3O<3uzfzZM z!hw9>e8X>s*}uJ9dEdW3YjRUj&5Tf#NmUhQZ;M<`?1 zRWf=Wh{xp_EKmbdl@=i3e5|#q5gM`pNk#dxU0ZEQZ(np r6I{>k98}o2>~VO+xSjRb_0Dp-*DQPLZUfC}6EWP{i@_FOzEA!D)LZ1y literal 0 HcmV?d00001 diff --git a/shaders/glsl/fs_tint.bin b/shaders/glsl/fs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..ec324cd4c4dea39de3dc3ecdc1544e61eb67df4a GIT binary patch literal 277 zcmZXPOA5j;6h%|NkX5{4q9Rh96-P>O?gBz-(;8?SNz>9Ij$Ej?1y|tfM-+q%@=mxp z@A{|X#JRtoV=^m+RkiOr!DyDj9B}5}{7D*?9B^ zyNEFoYHcEXDRUKTll6h#^9MWMmli>GNu_ZQ(8=+4ts=+*l>_7SN&%8o_$Em9tsQp2 l7z%A^Bt}@5Spoam0+uk8TGtKdu)wh`+}=JNxJPf4k~ecBS8f0R literal 0 HcmV?d00001 diff --git a/shaders/glsl/vs_blit.bin b/shaders/glsl/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/shaders/glsl/vs_phosphor.bin b/shaders/glsl/vs_phosphor.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/shaders/glsl/vs_ratios.bin b/shaders/glsl/vs_ratios.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/shaders/glsl/vs_tint.bin b/shaders/glsl/vs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/shaders/metal/fs_blit.bin b/shaders/metal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a3da392480084ed1b98155d1951154fce2cb223 GIT binary patch literal 634 zcmZ{i%SyvQ6o#X?%2S+`%t$D;bXRpF6kQY-#Z?Kzm`u{(T*6#RL0tKyzJgEST#`~t z-DUnc=ljq3C(HHI)y3D(cb2_hW|=dcY(Y}NOiwEYf?3KJxv|<+7WSOlmF4R#t(kt7 zy|eI<12kMwJBJ;q6jyq>7^Rt)EZbK~>DsHG=Q%IVj-V~&%^X@zmYTMY0rqd#tLz%3 zh4=T^#+M5wPX-*o!_X_*NkC^dAi{Fe!DeGDZ5iogSr$+!>5r$x!SotpkMlimu4$M? zQ(TsQ>jD7$!q#avtM6hg4`4zDzI3>VwFMX|dd_qt8PSumYS3d9&O^F?Mjm#G{wf5W zBD133QB7`xGJeB-x9*r6^n{hHL~1{^N{?AY-buktoTxXfiJ+% zX=n!_79(Yjug}Z&_3ej?7e9Xe%(9mkS+?j&3?K-ndL|tOP7PsKxi)I)46KZp8^dl# za-iy?m=^=za)6#mVp=%jPBN)3uM$*S$k4TuQXMS%{XEa7#U!GUu)c+X;cG>P_m1qZ zyFQDlmx^!o7d#WK&8Xxuj3*NThlgK<{$xS`xx`E!(UEOELql)K~oqlVa%&m>*R;mi!5k3`{}L((_A z4U2`hTLt36?L1{Dq42?LY$Td${qohyaI!*? zayiVh7A|>%ijbf|ak=(eUdL0f9xtE6W289RR1cQ>MEl@`L$THN4cM6=)+RCc;d@7X rvc`ggHaTcg6U95XXt+il>+=Vl9LmpmX9Tl9d#v6jmzhv|7W0k@f>EyEb-|Do>hM$P;A0 z;JDMda0m18o0xB#D^@(SsnIP9te3aHRr%UtW_kohJ{UZi`kaQGS>lWrM90QR-vVXVt#qeqgKUs z#m*7vF|;gR-p4xJ#TnM?`&fr#I literal 0 HcmV?d00001 diff --git a/shaders/metal/fs_tint.bin b/shaders/metal/fs_tint.bin new file mode 100644 index 0000000000000000000000000000000000000000..5e51658527dc9a037f596bc80702e741fec6474c GIT binary patch literal 753 zcmZ`%-AcnS6t3b`pW<9eqovH!yQw$A(2Jokypj@Pmv)6TDQPk$vMZldAHgT^G)?Cm z^Qz6)^ZlGJoh|OqPCmXrgW&5l2y9o&3M6ZI*Rp~`!wnPDurt~g1~!73xe<#MTXOv% zTWjDw1So}KCWAFClu&vy9ibEh=MohgE)RC_-hQt+t0hE7mZXglw1$_L&ajHpTIP8Sg_3wY zRP?#d!Er2dUTs-&9Zg7{V=*xRU?;|Eo-VIlbGOj-HQ}iL;AUg!Sknrwol@7dbe!_I zn<8O<0e>Rxppj8O|| zPCRnak|CHA+U1QQa!aNpLLWjLf5?{XUv!@!a$+PJ7#Y4C06X7{-(dZn69OKoG5_!v R4o;e5({h-`GPYqD`~WST0ipl^ literal 0 HcmV?d00001 diff --git a/shaders/metal/vs_blit.bin b/shaders/metal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..122b7dee5c387c772067b0ca196a2f12b636ec8d GIT binary patch literal 757 zcmZ{iy-ve06oms~%2V74rKpP1kge(tLq(+umMV(e)G0=Z9XZ!&3S#0(S$F`R0Oz+( zRkqkV_nyz^ + +#include +#include +#include + +#include "chainmanager.h" +#include "chainreader.h" +#include "chain.h" + +using namespace rapidjson; + +chain_manager::~chain_manager() +{ + for (std::pair chain : m_chains) + { + delete chain.second; + } + m_chains.clear(); +} + +bgfx_chain* chain_manager::chain(std::string name) +{ + std::map::iterator iter = m_chains.find(name); + if (iter != m_chains.end()) + { + return iter->second; + } + + return load_chain(name); +} + +bgfx_chain* chain_manager::load_chain(std::string name) { + std::string path = "bgfx/chains/" + name + ".json"; + + bx::CrtFileReader reader; + bx::open(&reader, path.c_str()); + + int32_t size = (uint32_t)bx::getSize(&reader); + + char* data = new char[size + 1]; + bx::read(&reader, reinterpret_cast(data), size); + bx::close(&reader); + data[size] = 0; + + Document document; + document.Parse<0>(data); + bgfx_chain* chain = chain_reader::read_from_value(document, m_textures, m_targets, m_effects, m_width, m_height); + + m_chains[name] = chain; + + return chain; +} diff --git a/src/osd/modules/render/bgfx/chainmanager.h b/src/osd/modules/render/bgfx/chainmanager.h new file mode 100644 index 00000000000..63c97215dec --- /dev/null +++ b/src/osd/modules/render/bgfx/chainmanager.h @@ -0,0 +1,54 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// chainmanager.h - BGFX shader chain manager +// +// Maintains a string-to-entry lookup of BGFX shader +// effect chains, defined by chain.h and read by chainreader.h +// +//============================================================ + +#pragma once + +#ifndef __DRAWBGFX_CHAIN_MANAGER__ +#define __DRAWBGFX_CHAIN_MANAGER__ + +#include +#include + +#include + +#include "texturemanager.h" +#include "targetmanager.h" +#include "effectmanager.h" + +class bgfx_chain; + +class chain_manager { +public: + chain_manager(texture_manager& textures, target_manager& targets, effect_manager& effects, uint32_t width, uint32_t height) + : m_textures(textures) + , m_targets(targets) + , m_effects(effects) + , m_width(width) + , m_height(height) + { + } + ~chain_manager(); + + // Getters + bgfx_chain* chain(std::string name); + +private: + bgfx_chain* load_chain(std::string name); + + texture_manager& m_textures; + target_manager& m_targets; + effect_manager& m_effects; + uint32_t m_width; + uint32_t m_height; + std::map m_chains; +}; + +#endif // __DRAWBGFX_CHAIN_MANAGER__ diff --git a/src/osd/modules/render/bgfx/chainreader.cpp b/src/osd/modules/render/bgfx/chainreader.cpp index 2498e8206b6..392fb93fb65 100644 --- a/src/osd/modules/render/bgfx/chainreader.cpp +++ b/src/osd/modules/render/bgfx/chainreader.cpp @@ -25,6 +25,7 @@ bgfx_chain* chain_reader::read_from_value(const Value& value, texture_manager& t std::string name = value["name"].GetString(); std::string author = value["author"].GetString(); + // Parse sliders std::vector sliders; if (value.HasMember("sliders")) { @@ -35,6 +36,7 @@ bgfx_chain* chain_reader::read_from_value(const Value& value, texture_manager& t } } + // Parse parameters std::vector parameters; if (value.HasMember("parameters")) { @@ -45,6 +47,7 @@ bgfx_chain* chain_reader::read_from_value(const Value& value, texture_manager& t } } + // Parse chain entries std::vector entries; if (value.HasMember("passes")) { @@ -55,6 +58,7 @@ bgfx_chain* chain_reader::read_from_value(const Value& value, texture_manager& t } } + // Create targets if (value.HasMember("targets")) { const Value& target_array = value["targets"]; diff --git a/src/osd/modules/render/bgfx/fs_blit.sc b/src/osd/modules/render/bgfx/fs_blit.sc new file mode 100644 index 00000000000..5130d1bebb5 --- /dev/null +++ b/src/osd/modules/render/bgfx/fs_blit.sc @@ -0,0 +1,13 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +SAMPLER2D(s_tex, 0); + +void main() +{ + gl_FragColor = texture2D(s_tex, v_texcoord0) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/fs_phosphor.sc b/src/osd/modules/render/bgfx/fs_phosphor.sc new file mode 100644 index 00000000000..2df6b3f827d --- /dev/null +++ b/src/osd/modules/render/bgfx/fs_phosphor.sc @@ -0,0 +1,20 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +uniform vec4 u_passthrough; +uniform vec4 u_phosphor; + +SAMPLER2D(s_tex, 0); +SAMPLER2D(s_prev, 1); + +void main() +{ + vec4 curr = texture2D(s_tex, v_texcoord0); + vec4 prev = texture2D(s_prev, v_texcoord0); + vec4 phosphored = vec4(max(curr.r, prev.r * u_phosphor.r), max(curr.g, prev.g * u_phosphor.g), max(curr.b, prev.b * u_phosphor.b), curr.a); + gl_FragColor = mix(phosphored, curr, u_passthrough.x) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/fs_ratios.sc b/src/osd/modules/render/bgfx/fs_ratios.sc new file mode 100644 index 00000000000..c45050d4a4f --- /dev/null +++ b/src/osd/modules/render/bgfx/fs_ratios.sc @@ -0,0 +1,23 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +uniform vec4 u_ratio_amount; +uniform vec4 u_red_ratios; +uniform vec4 u_grn_ratios; +uniform vec4 u_blu_ratios; + +SAMPLER2D(s_tex, 0); + +void main() +{ + vec4 texel = texture2D(s_tex, v_texcoord0); + float red = dot(texel.rgb, u_red_ratios.rgb); + float grn = dot(texel.rgb, u_grn_ratios.rgb); + float blu = dot(texel.rgb, u_blu_ratios.rgb); + vec3 mixed = mix(texel.rgb, vec3(red, grn, blu), u_ratio_amount.x); + gl_FragColor = vec4(mixed, texel.a) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/fs_tint.sc b/src/osd/modules/render/bgfx/fs_tint.sc new file mode 100644 index 00000000000..3e79f1e16e6 --- /dev/null +++ b/src/osd/modules/render/bgfx/fs_tint.sc @@ -0,0 +1,16 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +uniform vec4 u_tint; +uniform vec4 u_shift; + +SAMPLER2D(s_tex, 0); + +void main() +{ + gl_FragColor = texture2D(s_tex, v_texcoord0 + u_shift.xy) * u_tint * v_color0; +} diff --git a/src/osd/modules/render/bgfx/target.h b/src/osd/modules/render/bgfx/target.h index d4cea313464..19bf429e606 100644 --- a/src/osd/modules/render/bgfx/target.h +++ b/src/osd/modules/render/bgfx/target.h @@ -22,6 +22,7 @@ public: // Getters bgfx::FrameBufferHandle target() const { return m_target; } + virtual bool is_target() const override { return true; } private: bgfx::FrameBufferHandle m_target; diff --git a/src/osd/modules/render/bgfx/targetmanager.cpp b/src/osd/modules/render/bgfx/targetmanager.cpp index 930fbf1bfe0..88a3013350e 100644 --- a/src/osd/modules/render/bgfx/targetmanager.cpp +++ b/src/osd/modules/render/bgfx/targetmanager.cpp @@ -25,7 +25,6 @@ target_manager::~target_manager() bgfx_target* target_manager::create_target(std::string name, bgfx::TextureFormat::Enum format, uint32_t width, uint32_t height, bool filter) { - printf("Creating %s\n", name.c_str()); bgfx_target* target = new bgfx_target(name, format, width, height, filter); m_targets[name] = target; @@ -35,7 +34,6 @@ bgfx_target* target_manager::create_target(std::string name, bgfx::TextureFormat bgfx_target* target_manager::create_target(std::string name, void *handle, uint32_t width, uint32_t height) { - printf("Creating %s\n", name.c_str()); bgfx_target* target = new bgfx_target(name, handle, width, height); m_targets[name] = target; diff --git a/src/osd/modules/render/bgfx/texture.h b/src/osd/modules/render/bgfx/texture.h index 2fc3a596ddc..70dad1c13b6 100644 --- a/src/osd/modules/render/bgfx/texture.h +++ b/src/osd/modules/render/bgfx/texture.h @@ -27,6 +27,7 @@ public: uint32_t width() const { return m_width; } uint32_t height() const { return m_height; } bgfx::TextureHandle handle() const { return m_handle; } + virtual bool is_target() const { return false; } protected: std::string m_name; diff --git a/src/osd/modules/render/bgfx/texturemanager.cpp b/src/osd/modules/render/bgfx/texturemanager.cpp index 4a8cdd5d934..4da872978dd 100644 --- a/src/osd/modules/render/bgfx/texturemanager.cpp +++ b/src/osd/modules/render/bgfx/texturemanager.cpp @@ -18,7 +18,10 @@ texture_manager::~texture_manager() { for (std::pair texture : m_textures) { - delete texture.second; + if (!(texture.second)->is_target()) + { + delete texture.second; + } } m_textures.clear(); } diff --git a/src/osd/modules/render/bgfx/vs_blit.sc b/src/osd/modules/render/bgfx/vs_blit.sc new file mode 100644 index 00000000000..c3699f6fbd9 --- /dev/null +++ b/src/osd/modules/render/bgfx/vs_blit.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/vs_phosphor.sc b/src/osd/modules/render/bgfx/vs_phosphor.sc new file mode 100644 index 00000000000..c3699f6fbd9 --- /dev/null +++ b/src/osd/modules/render/bgfx/vs_phosphor.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/vs_ratios.sc b/src/osd/modules/render/bgfx/vs_ratios.sc new file mode 100644 index 00000000000..c3699f6fbd9 --- /dev/null +++ b/src/osd/modules/render/bgfx/vs_ratios.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/vs_tint.sc b/src/osd/modules/render/bgfx/vs_tint.sc new file mode 100644 index 00000000000..c3699f6fbd9 --- /dev/null +++ b/src/osd/modules/render/bgfx/vs_tint.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "../../../../../3rdparty/bgfx/examples/common/common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp index 4198148d8cd..786bdb1e936 100644 --- a/src/osd/modules/render/drawbgfx.cpp +++ b/src/osd/modules/render/drawbgfx.cpp @@ -35,9 +35,11 @@ #include "bgfx/targetmanager.h" #include "bgfx/shadermanager.h" #include "bgfx/effectmanager.h" +#include "bgfx/chainmanager.h" #include "bgfx/effect.h" #include "bgfx/texture.h" #include "bgfx/target.h" +#include "bgfx/chain.h" //============================================================ // DEBUGGING @@ -129,6 +131,7 @@ int renderer_bgfx::create() m_targets = new target_manager(*m_textures); m_shaders = new shader_manager(); m_effects = new effect_manager(*m_shaders); + m_chains = new chain_manager(*m_textures, *m_targets, *m_effects, m_width[window().m_index], m_height[window().m_index]); if (window().m_index != 0) { @@ -151,6 +154,8 @@ int renderer_bgfx::create() m_screen_effect[2] = m_effects->effect("screen_multiply"); m_screen_effect[3] = m_effects->effect("screen_add"); + //m_screen_chain[0] = m_chains->chain("test"); + uint32_t flags = BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP | BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT; m_texture_cache = m_textures->create_texture("#cache", bgfx::TextureFormat::RGBA8, CACHE_SIZE, CACHE_SIZE, nullptr, flags); @@ -167,10 +172,11 @@ int renderer_bgfx::create() renderer_bgfx::~renderer_bgfx() { // Cleanup. - delete m_targets; - delete m_textures; + delete m_chains; delete m_effects; delete m_shaders; + delete m_textures; + delete m_targets; } void renderer_bgfx::exit() diff --git a/src/osd/modules/render/drawbgfx.h b/src/osd/modules/render/drawbgfx.h index 924ee0add29..d96943ce6c1 100644 --- a/src/osd/modules/render/drawbgfx.h +++ b/src/osd/modules/render/drawbgfx.h @@ -14,9 +14,11 @@ class texture_manager; class target_manager; class shader_manager; class effect_manager; +class chain_manager; class bgfx_texture; class bgfx_effect; class bgfx_target; +class bgfx_chain; /* sdl_info is the information about SDL for the current screen */ class renderer_bgfx : public osd_renderer @@ -107,8 +109,11 @@ private: target_manager* m_targets; shader_manager* m_shaders; effect_manager* m_effects; + chain_manager* m_chains; + bgfx_effect* m_gui_effect[4]; bgfx_effect* m_screen_effect[4]; + //bgfx_chain* m_screen_chain[4]; std::map m_hash_to_entry; std::vector m_texinfo;