summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--bgfx/chains/default.json9
-rw-r--r--bgfx/chains/hlsl.json24
-rw-r--r--bgfx/effects/default/blit.json12
-rw-r--r--bgfx/effects/hlsl/blit.json12
-rw-r--r--bgfx/effects/hlsl/color.json8
-rw-r--r--bgfx/effects/hlsl/deconverge.json8
-rw-r--r--bgfx/effects/hlsl/defocus.json8
-rw-r--r--bgfx/effects/hlsl/distortion.json8
-rw-r--r--bgfx/effects/hlsl/ntsc_decode.json1
-rw-r--r--bgfx/effects/hlsl/ntsc_encode.json8
-rw-r--r--bgfx/effects/hlsl/phosphor.json8
-rw-r--r--bgfx/effects/hlsl/post.json8
-rw-r--r--bgfx/effects/hlsl/prescale.json8
-rw-r--r--bgfx/effects/unfiltered/blit.json12
-rw-r--r--bgfx/shaders/dx11/fs_blit.binbin42904 -> 42904 bytes
-rw-r--r--bgfx/shaders/dx11/fs_color.binbin45305 -> 45305 bytes
-rw-r--r--bgfx/shaders/dx11/fs_deconverge.binbin43108 -> 45228 bytes
-rw-r--r--bgfx/shaders/dx11/fs_defocus.binbin49898 -> 49982 bytes
-rw-r--r--bgfx/shaders/dx11/fs_distortion.binbin60482 -> 60534 bytes
-rw-r--r--bgfx/shaders/dx11/fs_gui.binbin42904 -> 42904 bytes
-rw-r--r--bgfx/shaders/dx11/fs_ntsc_decode.binbin60511 -> 60554 bytes
-rw-r--r--bgfx/shaders/dx11/fs_ntsc_encode.binbin50379 -> 50379 bytes
-rw-r--r--bgfx/shaders/dx11/fs_phosphor.binbin45190 -> 45190 bytes
-rw-r--r--bgfx/shaders/dx11/fs_post.binbin57706 -> 57682 bytes
-rw-r--r--bgfx/shaders/dx11/fs_prescale.binbin45438 -> 42904 bytes
-rw-r--r--bgfx/shaders/dx11/fs_screen.binbin42904 -> 42904 bytes
-rw-r--r--bgfx/shaders/dx11/vs_blit.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_color.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_deconverge.binbin45836 -> 45892 bytes
-rw-r--r--bgfx/shaders/dx11/vs_defocus.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_distortion.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_gui.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_ntsc_decode.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_ntsc_encode.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_phosphor.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_post.binbin43223 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_prescale.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx11/vs_screen.binbin43083 -> 43083 bytes
-rw-r--r--bgfx/shaders/dx9/fs_deconverge.binbin1017 -> 1101 bytes
-rw-r--r--bgfx/shaders/dx9/fs_defocus.binbin1807 -> 1911 bytes
-rw-r--r--bgfx/shaders/dx9/fs_distortion.binbin5447 -> 5499 bytes
-rw-r--r--bgfx/shaders/dx9/fs_ntsc_decode.binbin8356 -> 8439 bytes
-rw-r--r--bgfx/shaders/dx9/fs_post.binbin4835 -> 4835 bytes
-rw-r--r--bgfx/shaders/dx9/fs_prescale.binbin1399 -> 617 bytes
-rw-r--r--bgfx/shaders/dx9/vs_deconverge.binbin1799 -> 1871 bytes
-rw-r--r--bgfx/shaders/dx9/vs_post.binbin1142 -> 894 bytes
-rw-r--r--bgfx/shaders/gles/fs_deconverge.binbin424 -> 485 bytes
-rw-r--r--bgfx/shaders/gles/fs_defocus.binbin1051 -> 1167 bytes
-rw-r--r--bgfx/shaders/gles/fs_distortion.binbin5160 -> 5408 bytes
-rw-r--r--bgfx/shaders/gles/fs_ntsc_decode.binbin6438 -> 6484 bytes
-rw-r--r--bgfx/shaders/gles/fs_post.binbin3805 -> 3784 bytes
-rw-r--r--bgfx/shaders/gles/fs_prescale.binbin719 -> 238 bytes
-rw-r--r--bgfx/shaders/gles/vs_deconverge.binbin1409 -> 1470 bytes
-rw-r--r--bgfx/shaders/gles/vs_post.binbin629 -> 419 bytes
-rw-r--r--bgfx/shaders/glsl/fs_deconverge.binbin395 -> 450 bytes
-rw-r--r--bgfx/shaders/glsl/fs_defocus.binbin1016 -> 1122 bytes
-rw-r--r--bgfx/shaders/glsl/fs_distortion.binbin4921 -> 5164 bytes
-rw-r--r--bgfx/shaders/glsl/fs_ntsc_decode.binbin6050 -> 6096 bytes
-rw-r--r--bgfx/shaders/glsl/fs_post.binbin3603 -> 3582 bytes
-rw-r--r--bgfx/shaders/glsl/fs_prescale.binbin646 -> 181 bytes
-rw-r--r--bgfx/shaders/glsl/vs_deconverge.binbin1301 -> 1356 bytes
-rw-r--r--bgfx/shaders/glsl/vs_post.binbin569 -> 377 bytes
-rw-r--r--bgfx/shaders/metal/fs_deconverge.binbin997 -> 1117 bytes
-rw-r--r--bgfx/shaders/metal/fs_defocus.binbin2291 -> 2355 bytes
-rw-r--r--bgfx/shaders/metal/fs_distortion.binbin5557 -> 5764 bytes
-rw-r--r--bgfx/shaders/metal/fs_ntsc_decode.binbin6849 -> 6943 bytes
-rw-r--r--bgfx/shaders/metal/fs_post.binbin4384 -> 4351 bytes
-rw-r--r--bgfx/shaders/metal/fs_prescale.binbin1111 -> 634 bytes
-rw-r--r--bgfx/shaders/metal/vs_deconverge.binbin1547 -> 1612 bytes
-rw-r--r--bgfx/shaders/metal/vs_post.binbin925 -> 757 bytes
-rw-r--r--src/osd/modules/render/bgfx/chainentry.cpp11
-rw-r--r--src/osd/modules/render/bgfx/chainentry.h1
-rw-r--r--src/osd/modules/render/bgfx/shaders/fs_deconverge.sc11
-rw-r--r--src/osd/modules/render/bgfx/shaders/fs_defocus.sc3
-rw-r--r--src/osd/modules/render/bgfx/shaders/fs_distortion.sc41
-rw-r--r--src/osd/modules/render/bgfx/shaders/fs_ntsc_decode.sc3
-rw-r--r--src/osd/modules/render/bgfx/shaders/fs_post.sc7
-rw-r--r--src/osd/modules/render/bgfx/shaders/fs_prescale.sc2
-rw-r--r--src/osd/modules/render/bgfx/shaders/varying.def.sc1
-rw-r--r--src/osd/modules/render/bgfx/shaders/vs_deconverge.sc9
-rw-r--r--src/osd/modules/render/bgfx/shaders/vs_post.sc7
-rw-r--r--src/osd/modules/render/drawbgfx.cpp42
-rw-r--r--src/osd/modules/render/drawbgfx.h1
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
@@ -8,16 +8,9 @@
],
"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" },
@@ -176,15 +176,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.
"effect": "hlsl/ntsc_encode",
@@ -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 cc7afc788ab..0a2c7a979f6 100644
--- a/bgfx/shaders/dx11/fs_blit.bin
+++ b/bgfx/shaders/dx11/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_color.bin b/bgfx/shaders/dx11/fs_color.bin
index 5acea195472..86da7f9fde7 100644
--- a/bgfx/shaders/dx11/fs_color.bin
+++ b/bgfx/shaders/dx11/fs_color.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_deconverge.bin b/bgfx/shaders/dx11/fs_deconverge.bin
index f8954f8ee4b..e85b211b5f7 100644
--- a/bgfx/shaders/dx11/fs_deconverge.bin
+++ b/bgfx/shaders/dx11/fs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_defocus.bin b/bgfx/shaders/dx11/fs_defocus.bin
index f342c80f26b..894cc151994 100644
--- a/bgfx/shaders/dx11/fs_defocus.bin
+++ b/bgfx/shaders/dx11/fs_defocus.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_distortion.bin b/bgfx/shaders/dx11/fs_distortion.bin
index 0ee1150c722..13e60b64c34 100644
--- a/bgfx/shaders/dx11/fs_distortion.bin
+++ b/bgfx/shaders/dx11/fs_distortion.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_gui.bin b/bgfx/shaders/dx11/fs_gui.bin
index 54a4ed300e3..207238153b0 100644
--- a/bgfx/shaders/dx11/fs_gui.bin
+++ b/bgfx/shaders/dx11/fs_gui.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_ntsc_decode.bin b/bgfx/shaders/dx11/fs_ntsc_decode.bin
index 7f6d8167939..a63dd82f051 100644
--- a/bgfx/shaders/dx11/fs_ntsc_decode.bin
+++ b/bgfx/shaders/dx11/fs_ntsc_decode.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_ntsc_encode.bin b/bgfx/shaders/dx11/fs_ntsc_encode.bin
index a6700b833e1..bbf6cf59f69 100644
--- a/bgfx/shaders/dx11/fs_ntsc_encode.bin
+++ b/bgfx/shaders/dx11/fs_ntsc_encode.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_phosphor.bin b/bgfx/shaders/dx11/fs_phosphor.bin
index eb9b15d3274..96ed99bf58f 100644
--- a/bgfx/shaders/dx11/fs_phosphor.bin
+++ b/bgfx/shaders/dx11/fs_phosphor.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_post.bin b/bgfx/shaders/dx11/fs_post.bin
index 6cb61306fe2..dbc2df6f5e2 100644
--- a/bgfx/shaders/dx11/fs_post.bin
+++ b/bgfx/shaders/dx11/fs_post.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_prescale.bin b/bgfx/shaders/dx11/fs_prescale.bin
index 7e5fadd5805..775efb02666 100644
--- a/bgfx/shaders/dx11/fs_prescale.bin
+++ b/bgfx/shaders/dx11/fs_prescale.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/fs_screen.bin b/bgfx/shaders/dx11/fs_screen.bin
index 83828d145f7..d233a876afe 100644
--- a/bgfx/shaders/dx11/fs_screen.bin
+++ b/bgfx/shaders/dx11/fs_screen.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_blit.bin b/bgfx/shaders/dx11/vs_blit.bin
index 346eae89602..dbdd427c139 100644
--- a/bgfx/shaders/dx11/vs_blit.bin
+++ b/bgfx/shaders/dx11/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_color.bin b/bgfx/shaders/dx11/vs_color.bin
index 5f21c9be763..1ac6da1c4b7 100644
--- a/bgfx/shaders/dx11/vs_color.bin
+++ b/bgfx/shaders/dx11/vs_color.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_deconverge.bin b/bgfx/shaders/dx11/vs_deconverge.bin
index 59e0c530392..07831863c5e 100644
--- a/bgfx/shaders/dx11/vs_deconverge.bin
+++ b/bgfx/shaders/dx11/vs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_defocus.bin b/bgfx/shaders/dx11/vs_defocus.bin
index f75c794c2c2..a2f278b3a0e 100644
--- a/bgfx/shaders/dx11/vs_defocus.bin
+++ b/bgfx/shaders/dx11/vs_defocus.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_distortion.bin b/bgfx/shaders/dx11/vs_distortion.bin
index 73b8e5190e1..cb7e87ac0a8 100644
--- a/bgfx/shaders/dx11/vs_distortion.bin
+++ b/bgfx/shaders/dx11/vs_distortion.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_gui.bin b/bgfx/shaders/dx11/vs_gui.bin
index 7b387679737..8fe988ac52e 100644
--- a/bgfx/shaders/dx11/vs_gui.bin
+++ b/bgfx/shaders/dx11/vs_gui.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_ntsc_decode.bin b/bgfx/shaders/dx11/vs_ntsc_decode.bin
index 29cc7d9290a..3aced6dceb1 100644
--- a/bgfx/shaders/dx11/vs_ntsc_decode.bin
+++ b/bgfx/shaders/dx11/vs_ntsc_decode.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_ntsc_encode.bin b/bgfx/shaders/dx11/vs_ntsc_encode.bin
index bbcbf4ede89..0b269c0314f 100644
--- a/bgfx/shaders/dx11/vs_ntsc_encode.bin
+++ b/bgfx/shaders/dx11/vs_ntsc_encode.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_phosphor.bin b/bgfx/shaders/dx11/vs_phosphor.bin
index 07edbef7bad..4d5113f78cf 100644
--- a/bgfx/shaders/dx11/vs_phosphor.bin
+++ b/bgfx/shaders/dx11/vs_phosphor.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_post.bin b/bgfx/shaders/dx11/vs_post.bin
index 5362d6c50eb..dfabae70ba2 100644
--- a/bgfx/shaders/dx11/vs_post.bin
+++ b/bgfx/shaders/dx11/vs_post.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_prescale.bin b/bgfx/shaders/dx11/vs_prescale.bin
index dee008391ae..a26188bb295 100644
--- a/bgfx/shaders/dx11/vs_prescale.bin
+++ b/bgfx/shaders/dx11/vs_prescale.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/vs_screen.bin b/bgfx/shaders/dx11/vs_screen.bin
index 9d5426f76be..e2c93936309 100644
--- a/bgfx/shaders/dx11/vs_screen.bin
+++ b/bgfx/shaders/dx11/vs_screen.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/fs_deconverge.bin b/bgfx/shaders/dx9/fs_deconverge.bin
index 6417bf6ad00..5092fcd9fc8 100644
--- a/bgfx/shaders/dx9/fs_deconverge.bin
+++ b/bgfx/shaders/dx9/fs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/fs_defocus.bin b/bgfx/shaders/dx9/fs_defocus.bin
index 275e264bf06..602dcf53c64 100644
--- a/bgfx/shaders/dx9/fs_defocus.bin
+++ b/bgfx/shaders/dx9/fs_defocus.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/fs_distortion.bin b/bgfx/shaders/dx9/fs_distortion.bin
index b25548edd31..becf5b0d597 100644
--- a/bgfx/shaders/dx9/fs_distortion.bin
+++ b/bgfx/shaders/dx9/fs_distortion.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/fs_ntsc_decode.bin b/bgfx/shaders/dx9/fs_ntsc_decode.bin
index e31c3548b83..5d2a3329b6f 100644
--- a/bgfx/shaders/dx9/fs_ntsc_decode.bin
+++ b/bgfx/shaders/dx9/fs_ntsc_decode.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/fs_post.bin b/bgfx/shaders/dx9/fs_post.bin
index b0e0edd02ac..96408926fbe 100644
--- a/bgfx/shaders/dx9/fs_post.bin
+++ b/bgfx/shaders/dx9/fs_post.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/fs_prescale.bin b/bgfx/shaders/dx9/fs_prescale.bin
index a5f3ca47440..b4b71f80099 100644
--- a/bgfx/shaders/dx9/fs_prescale.bin
+++ b/bgfx/shaders/dx9/fs_prescale.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/vs_deconverge.bin b/bgfx/shaders/dx9/vs_deconverge.bin
index dbe6e584767..c514e5f8cd0 100644
--- a/bgfx/shaders/dx9/vs_deconverge.bin
+++ b/bgfx/shaders/dx9/vs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/vs_post.bin b/bgfx/shaders/dx9/vs_post.bin
index c006fe0c6ac..66dec862e4c 100644
--- a/bgfx/shaders/dx9/vs_post.bin
+++ b/bgfx/shaders/dx9/vs_post.bin
Binary files differ
diff --git a/bgfx/shaders/gles/fs_deconverge.bin b/bgfx/shaders/gles/fs_deconverge.bin
index 9a70a7b0737..855f8019b5c 100644
--- a/bgfx/shaders/gles/fs_deconverge.bin
+++ b/bgfx/shaders/gles/fs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/gles/fs_defocus.bin b/bgfx/shaders/gles/fs_defocus.bin
index 98ff6f0b9cf..5d29797339f 100644
--- a/bgfx/shaders/gles/fs_defocus.bin
+++ b/bgfx/shaders/gles/fs_defocus.bin
Binary files differ
diff --git a/bgfx/shaders/gles/fs_distortion.bin b/bgfx/shaders/gles/fs_distortion.bin
index e518fc0f0a3..53e7b262a43 100644
--- a/bgfx/shaders/gles/fs_distortion.bin
+++ b/bgfx/shaders/gles/fs_distortion.bin
Binary files differ
diff --git a/bgfx/shaders/gles/fs_ntsc_decode.bin b/bgfx/shaders/gles/fs_ntsc_decode.bin
index cb4ddcdb7b4..d1e69f5e0e3 100644
--- a/bgfx/shaders/gles/fs_ntsc_decode.bin
+++ b/bgfx/shaders/gles/fs_ntsc_decode.bin
Binary files differ
diff --git a/bgfx/shaders/gles/fs_post.bin b/bgfx/shaders/gles/fs_post.bin
index e9896427988..0d5393b4be6 100644
--- a/bgfx/shaders/gles/fs_post.bin
+++ b/bgfx/shaders/gles/fs_post.bin
Binary files differ
diff --git a/bgfx/shaders/gles/fs_prescale.bin b/bgfx/shaders/gles/fs_prescale.bin
index 9be375f6f02..22e2f0c23d0 100644
--- a/bgfx/shaders/gles/fs_prescale.bin
+++ b/bgfx/shaders/gles/fs_prescale.bin
Binary files differ
diff --git a/bgfx/shaders/gles/vs_deconverge.bin b/bgfx/shaders/gles/vs_deconverge.bin
index 1183e5872a0..08aeca09e23 100644
--- a/bgfx/shaders/gles/vs_deconverge.bin
+++ b/bgfx/shaders/gles/vs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/gles/vs_post.bin b/bgfx/shaders/gles/vs_post.bin
index e9803083792..9dd618de8a0 100644
--- a/bgfx/shaders/gles/vs_post.bin
+++ b/bgfx/shaders/gles/vs_post.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/fs_deconverge.bin b/bgfx/shaders/glsl/fs_deconverge.bin
index 7ccc3407545..96136e77f17 100644
--- a/bgfx/shaders/glsl/fs_deconverge.bin
+++ b/bgfx/shaders/glsl/fs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/fs_defocus.bin b/bgfx/shaders/glsl/fs_defocus.bin
index 0adf5a7fd67..27765612664 100644
--- a/bgfx/shaders/glsl/fs_defocus.bin
+++ b/bgfx/shaders/glsl/fs_defocus.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/fs_distortion.bin b/bgfx/shaders/glsl/fs_distortion.bin
index 11087b688ff..149e638711c 100644
--- a/bgfx/shaders/glsl/fs_distortion.bin
+++ b/bgfx/shaders/glsl/fs_distortion.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/fs_ntsc_decode.bin b/bgfx/shaders/glsl/fs_ntsc_decode.bin
index 2ba4513f445..9bb6f3b1db8 100644
--- a/bgfx/shaders/glsl/fs_ntsc_decode.bin
+++ b/bgfx/shaders/glsl/fs_ntsc_decode.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/fs_post.bin b/bgfx/shaders/glsl/fs_post.bin
index 056f8728347..4af086c0e8b 100644
--- a/bgfx/shaders/glsl/fs_post.bin
+++ b/bgfx/shaders/glsl/fs_post.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/fs_prescale.bin b/bgfx/shaders/glsl/fs_prescale.bin
index e29683b9539..db0fe2b487b 100644
--- a/bgfx/shaders/glsl/fs_prescale.bin
+++ b/bgfx/shaders/glsl/fs_prescale.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/vs_deconverge.bin b/bgfx/shaders/glsl/vs_deconverge.bin
index 137a591a958..2398d71b227 100644
--- a/bgfx/shaders/glsl/vs_deconverge.bin
+++ b/bgfx/shaders/glsl/vs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/vs_post.bin b/bgfx/shaders/glsl/vs_post.bin
index 510526ec588..af6c9349f41 100644
--- a/bgfx/shaders/glsl/vs_post.bin
+++ b/bgfx/shaders/glsl/vs_post.bin
Binary files differ
diff --git a/bgfx/shaders/metal/fs_deconverge.bin b/bgfx/shaders/metal/fs_deconverge.bin
index 60d2550f74d..ff76a618ee1 100644
--- a/bgfx/shaders/metal/fs_deconverge.bin
+++ b/bgfx/shaders/metal/fs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/metal/fs_defocus.bin b/bgfx/shaders/metal/fs_defocus.bin
index 52900807388..ab14379b016 100644
--- a/bgfx/shaders/metal/fs_defocus.bin
+++ b/bgfx/shaders/metal/fs_defocus.bin
Binary files differ
diff --git a/bgfx/shaders/metal/fs_distortion.bin b/bgfx/shaders/metal/fs_distortion.bin
index 6dca893e794..b1d6bd4c79d 100644
--- a/bgfx/shaders/metal/fs_distortion.bin
+++ b/bgfx/shaders/metal/fs_distortion.bin
Binary files differ
diff --git a/bgfx/shaders/metal/fs_ntsc_decode.bin b/bgfx/shaders/metal/fs_ntsc_decode.bin
index 5450ff39a71..1436bc4707c 100644
--- a/bgfx/shaders/metal/fs_ntsc_decode.bin
+++ b/bgfx/shaders/metal/fs_ntsc_decode.bin
Binary files differ
diff --git a/bgfx/shaders/metal/fs_post.bin b/bgfx/shaders/metal/fs_post.bin
index 133e08292a4..3b137b24671 100644
--- a/bgfx/shaders/metal/fs_post.bin
+++ b/bgfx/shaders/metal/fs_post.bin
Binary files differ
diff --git a/bgfx/shaders/metal/fs_prescale.bin b/bgfx/shaders/metal/fs_prescale.bin
index 035da8beca4..6a3da392480 100644
--- a/bgfx/shaders/metal/fs_prescale.bin
+++ b/bgfx/shaders/metal/fs_prescale.bin
Binary files differ
diff --git a/bgfx/shaders/metal/vs_deconverge.bin b/bgfx/shaders/metal/vs_deconverge.bin
index 071a3a6d612..b1b64cf68fa 100644
--- a/bgfx/shaders/metal/vs_deconverge.bin
+++ b/bgfx/shaders/metal/vs_deconverge.bin
Binary files differ
diff --git a/bgfx/shaders/metal/vs_post.bin b/bgfx/shaders/metal/vs_post.bin
index 7d355aa1df1..122b7dee5c3 100644
--- a/bgfx/shaders/metal/vs_post.bin
+++ b/bgfx/shaders/metal/vs_post.bin
Binary files differ
diff --git a/src/osd/modules/render/bgfx/chainentry.cpp b/src/osd/modules/render/bgfx/chainentry.cpp
index f3bbbb42378..be836ba33e5 100644
--- a/src/osd/modules/render/bgfx/chainentry.cpp
+++ b/src/osd/modules/render/bgfx/chainentry.cpp
@@ -146,6 +146,16 @@ void bgfx_chain_entry::setup_quaddims_uniform(render_primitive* prim) const
}
}
+void bgfx_chain_entry::setup_screenindex_uniform(int32_t screen) const
+{
+ bgfx_uniform* screen_index = m_effect->uniform("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<void*> 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<screen_device*> screens;
+ std::vector<void*> 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<std::vector<bgfx_chain*>> m_screen_chains;
+ std::vector<uint32_t> m_seen_views;
std::map<UINT32, rectangle_packer::packed_rectangle> m_hash_to_entry;
std::vector<rectangle_packer::packable_rectangle> m_texinfo;