summaryrefslogtreecommitdiffstatshomepage
path: root/bgfx
diff options
context:
space:
mode:
author Jeremy Green <cgwg@users.noreply.github.com>2016-07-03 22:43:16 +0200
committer Jeremy Green <cgwg@users.noreply.github.com>2016-07-03 22:43:16 +0200
commit3697bd8cdc9a7fa52759f67cdef0629e1e7876dc (patch)
tree588689c49cc180eeadace7e9e85993028dd11c75 /bgfx
parentf487ca3bcc17fd51d39ef83457da2784af9c9473 (diff)
Added crt-geom and crt-geom-deluxe shaders for bgfx.
This includes several aperture grille / shadow mask patterns. Note that these are all designed to be used on a display with RGB subpixel order, and may thus suffer if rotated or used with a BGR display.
Diffstat (limited to 'bgfx')
-rw-r--r--bgfx/chains/crt-geom-deluxe.json238
-rw-r--r--bgfx/chains/crt-geom.json134
-rw-r--r--bgfx/effects/crt-geom/crt-geom-deluxe.json43
-rw-r--r--bgfx/effects/crt-geom/crt-geom.json41
-rw-r--r--bgfx/effects/crt-geom/gaussx.json29
-rw-r--r--bgfx/effects/crt-geom/gaussy.json29
-rw-r--r--bgfx/effects/crt-geom/phosphor_apply.json29
-rw-r--r--bgfx/effects/crt-geom/phosphor_update.json29
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom-deluxe.binbin0 -> 7413 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom.binbin0 -> 7171 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/fs_gaussx.binbin0 -> 2416 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/fs_gaussy.binbin0 -> 2416 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_apply.binbin0 -> 936 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_update.binbin0 -> 949 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/vs_crt-geom.binbin0 -> 4910 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/vs_gaussx.binbin0 -> 798 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/vs_gaussy.binbin0 -> 798 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_apply.binbin0 -> 503 bytes
-rw-r--r--bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_update.binbin0 -> 503 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom-deluxe.binbin0 -> 5470 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom.binbin0 -> 5220 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/fs_gaussx.binbin0 -> 1845 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/fs_gaussy.binbin0 -> 1845 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_apply.binbin0 -> 893 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_update.binbin0 -> 810 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/vs_crt-geom.binbin0 -> 3301 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/vs_gaussx.binbin0 -> 685 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/vs_gaussy.binbin0 -> 685 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_apply.binbin0 -> 294 bytes
-rw-r--r--bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_update.binbin0 -> 294 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/fs_crt-geom-deluxe.binbin0 -> 7529 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/fs_crt-geom.binbin0 -> 7197 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/fs_gaussx.binbin0 -> 2081 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/fs_gaussy.binbin0 -> 2081 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/fs_phosphor_apply.binbin0 -> 705 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/fs_phosphor_update.binbin0 -> 999 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/vs_crt-geom.binbin0 -> 5019 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/vs_gaussx.binbin0 -> 684 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/vs_gaussy.binbin0 -> 684 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/vs_phosphor_apply.binbin0 -> 334 bytes
-rw-r--r--bgfx/shaders/gles/chains/crt-geom/vs_phosphor_update.binbin0 -> 334 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom-deluxe.binbin0 -> 7140 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom.binbin0 -> 6830 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/fs_gaussx.binbin0 -> 1993 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/fs_gaussy.binbin0 -> 1993 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_apply.binbin0 -> 671 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_update.binbin0 -> 946 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/vs_crt-geom.binbin0 -> 4707 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/vs_gaussx.binbin0 -> 624 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/vs_gaussy.binbin0 -> 624 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_apply.binbin0 -> 304 bytes
-rw-r--r--bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_update.binbin0 -> 304 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/fs_crt-geom-deluxe.binbin0 -> 9584 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/fs_crt-geom.binbin0 -> 9098 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/fs_gaussx.binbin0 -> 3785 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/fs_gaussy.binbin0 -> 3785 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/fs_phosphor_apply.binbin0 -> 1277 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/fs_phosphor_update.binbin0 -> 1495 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/vs_crt-geom.binbin0 -> 5278 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/vs_gaussx.binbin0 -> 952 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/vs_gaussy.binbin0 -> 952 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/vs_phosphor_apply.binbin0 -> 663 bytes
-rw-r--r--bgfx/shaders/metal/chains/crt-geom/vs_phosphor_update.binbin0 -> 663 bytes
63 files changed, 572 insertions, 0 deletions
diff --git a/bgfx/chains/crt-geom-deluxe.json b/bgfx/chains/crt-geom-deluxe.json
new file mode 100644
index 00000000000..b9a4b67820c
--- /dev/null
+++ b/bgfx/chains/crt-geom-deluxe.json
@@ -0,0 +1,238 @@
+{
+ "name": "CRT-geom",
+ "author": "cgwg",
+ "sliders": [
+ { "type": "float",
+ "name": "aperture_strength",
+ "text": "Shadow mask strength",
+ "default": 0.4,
+ "max" : 1.0,
+ "min" : 0.0,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "phosphor_power",
+ "text": "Phosphor decay power",
+ "default": 1.2,
+ "max" : 3.0,
+ "min" : 0.5,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "phosphor_amplitude",
+ "text": "Phosphor persistence amplitude",
+ "default": 0.04,
+ "max" : 0.2,
+ "min" : 0.0,
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "halation",
+ "text": "Halation amplitude",
+ "default": 0.1,
+ "max" : 0.3,
+ "min" : 0.0,
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "blurwidth",
+ "text": "Halation blur width",
+ "default": 2.0,
+ "max" : 4.0,
+ "min" : 0.1,
+ "step" : 0.1,
+ "format": "%1.1f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "curvature",
+ "text": "Enable curvature",
+ "default": 1.0,
+ "max" : 1.0,
+ "min" : 0.0,
+ "step" : 1.0,
+ "format": "%1.0f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "R",
+ "text": "Radius of curvature",
+ "default": 3.5,
+ "max" : 10.0,
+ "min" : 0.5,
+ "step" : 0.1,
+ "format": "%1.1f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "d",
+ "text": "Distance to screen",
+ "default": 2.0,
+ "max" : 10.0,
+ "min" : 0.1,
+ "step" : 0.1,
+ "format": "%1.1f",
+ "screen": "raster" },
+ { "type": "vec2",
+ "name": "angle",
+ "text": "Tilt ",
+ "default": [ 0.0,-0.05 ],
+ "max" : [ 1.0, 1.0 ],
+ "min" : [-1.0,-1.0 ],
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "cornersize",
+ "text": "Rounded corner size",
+ "default": 0.01,
+ "max" : 0.10,
+ "min" : 0.00,
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "cornersmooth",
+ "text": "Border smoothness",
+ "default": 1000,
+ "max" : 2000,
+ "min" : 100,
+ "step" : 100,
+ "format": "%1.0f",
+ "screen": "raster" },
+ { "type": "vec2",
+ "name": "overscan",
+ "text": "Overscan ",
+ "default": [ 1.0, 1.0 ],
+ "max" : [ 1.2, 1.2 ],
+ "min" : [ 0.8, 0.8 ],
+ "step" : 0.02,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "CRTgamma",
+ "text": "Gamma of simulated CRT",
+ "default": 2.4,
+ "max" : 4.0,
+ "min" : 0.7,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "monitorgamma",
+ "text": "Gamma of output display",
+ "default": 2.2,
+ "max" : 4.0,
+ "min" : 0.7,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "vec2",
+ "name": "aspect",
+ "text": "Aspect ratio ",
+ "default": [ 1.0, 0.75 ],
+ "max" : [ 1.0, 1.0 ],
+ "min" : [ 0.3, 0.3 ],
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" }
+ ],
+ "targets": [
+ { "name": "internal1",
+ "mode": "guest"
+ },
+ { "name": "internal2",
+ "mode": "guest"
+ },
+ { "name": "blur",
+ "mode": "guest"
+ },
+ { "name": "phosphor",
+ "mode": "guest"
+ }
+
+ ],
+ "passes": [
+ {
+ "effect": "crt-geom/phosphor_apply",
+ "name": "phosphor apply",
+ "uniforms": [
+ { "uniform": "u_phosphor_power", "slider": "phosphor_power" },
+ { "uniform": "u_phosphor_amplitude","slider": "phosphor_amplitude" },
+ { "uniform": "u_gamma", "slider": "CRTgamma" }
+ ],
+ "input": [
+ { "sampler": "s_screen", "target": "screen" },
+ { "sampler": "s_phosphor", "target": "phosphor" }
+ ],
+ "output": "internal1"
+ },
+ {
+ "effect": "crt-geom/phosphor_update",
+ "name": "phosphor update",
+ "uniforms": [
+ { "uniform": "u_phosphor_power", "slider": "phosphor_power" },
+ { "uniform": "u_phosphor_amplitude","slider": "phosphor_amplitude" },
+ { "uniform": "u_gamma", "slider": "CRTgamma" }
+ ],
+ "input": [
+ { "sampler": "s_screen", "target": "screen" },
+ { "sampler": "s_phosphor", "target": "phosphor" }
+ ],
+ "output": "phosphor"
+ },
+ {
+ "effect": "crt-geom/gaussx",
+ "name": "Gaussian blur x",
+ "uniforms": [
+ { "uniform": "u_width", "slider": "blurwidth" },
+ { "uniform": "u_aspect","slider": "aspect" },
+ { "uniform": "u_gamma", "slider": "CRTgamma" }
+ ],
+ "input": [
+ { "sampler": "s_tex", "target": "internal1" }
+ ],
+ "output": "internal2"
+ },
+ {
+ "effect": "crt-geom/gaussy",
+ "name": "Gaussian blur y",
+ "uniforms": [
+ { "uniform": "u_width", "slider": "blurwidth" },
+ { "uniform": "u_aspect","slider": "aspect" },
+ { "uniform": "u_gamma", "slider": "CRTgamma" }
+ ],
+ "input": [
+ { "sampler": "s_tex", "target": "internal2" }
+ ],
+ "output": "blur"
+ },
+ {
+ "effect": "crt-geom/crt-geom-deluxe",
+ "name": "CRT",
+ "uniforms": [
+ { "uniform": "curvature", "slider": "curvature" },
+ { "uniform": "R", "slider": "R" },
+ { "uniform": "d", "slider": "d" },
+ { "uniform": "angle", "slider": "angle" },
+ { "uniform": "cornersize", "slider": "cornersize" },
+ { "uniform": "cornersmooth","slider": "cornersmooth" },
+ { "uniform": "overscan", "slider": "overscan" },
+ { "uniform": "aspect", "slider": "aspect" },
+ { "uniform": "CRTgamma", "slider": "CRTgamma" },
+ { "uniform": "monitorgamma","slider": "monitorgamma" },
+ { "uniform": "aperture_strength","slider": "aperture_strength" },
+ { "uniform": "halation", "slider": "halation" }
+ ],
+
+ "input": [
+ { "sampler": "mpass_texture", "target": "internal1" },
+ { "sampler": "mask_texture", "texture": "bgfx/chains/crt-geom/aperture_1_2_bgr.png", "selection": "Shadow mask" },
+ { "sampler": "blur_texture", "target": "blur" }
+ ],
+
+ "output": "output"
+ }
+ ]
+}
diff --git a/bgfx/chains/crt-geom.json b/bgfx/chains/crt-geom.json
new file mode 100644
index 00000000000..a8187319157
--- /dev/null
+++ b/bgfx/chains/crt-geom.json
@@ -0,0 +1,134 @@
+{
+ "name": "CRT-geom",
+ "author": "cgwg",
+ "sliders": [
+ { "type": "float",
+ "name": "aperture_strength",
+ "text": "Shadow mask strength",
+ "default": 0.4,
+ "max" : 1.0,
+ "min" : 0.0,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "curvature",
+ "text": "Enable curvature",
+ "default": 1.0,
+ "max" : 1.0,
+ "min" : 0.0,
+ "step" : 1.0,
+ "format": "%1.0f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "R",
+ "text": "Radius of curvature",
+ "default": 3.5,
+ "max" : 10.0,
+ "min" : 0.5,
+ "step" : 0.1,
+ "format": "%1.1f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "d",
+ "text": "Distance to screen",
+ "default": 2.0,
+ "max" : 10.0,
+ "min" : 0.1,
+ "step" : 0.1,
+ "format": "%1.1f",
+ "screen": "raster" },
+ { "type": "vec2",
+ "name": "angle",
+ "text": "Tilt ",
+ "default": [ 0.0,-0.05 ],
+ "max" : [ 1.0, 1.0 ],
+ "min" : [-1.0,-1.0 ],
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "cornersize",
+ "text": "Rounded corner size",
+ "default": 0.01,
+ "max" : 0.10,
+ "min" : 0.00,
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "cornersmooth",
+ "text": "Border smoothness",
+ "default": 1000,
+ "max" : 2000,
+ "min" : 100,
+ "step" : 100,
+ "format": "%1.0f",
+ "screen": "raster" },
+ { "type": "vec2",
+ "name": "overscan",
+ "text": "Overscan ",
+ "default": [ 1.0, 1.0 ],
+ "max" : [ 1.2, 1.2 ],
+ "min" : [ 0.8, 0.8 ],
+ "step" : 0.02,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "CRTgamma",
+ "text": "Gamma of simulated CRT",
+ "default": 2.4,
+ "max" : 4.0,
+ "min" : 0.7,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "float",
+ "name": "monitorgamma",
+ "text": "Gamma of output display",
+ "default": 2.2,
+ "max" : 4.0,
+ "min" : 0.7,
+ "step" : 0.05,
+ "format": "%1.2f",
+ "screen": "raster" },
+ { "type": "vec2",
+ "name": "aspect",
+ "text": "Aspect ratio ",
+ "default": [ 1.0, 0.75 ],
+ "max" : [ 1.0, 1.0 ],
+ "min" : [ 0.3, 0.3 ],
+ "step" : 0.01,
+ "format": "%1.2f",
+ "screen": "raster" }
+ ],
+ "targets": [
+
+ ],
+ "passes": [
+ {
+ "effect": "crt-geom/crt-geom",
+ "name": "CRT",
+ "uniforms": [
+ { "uniform": "curvature", "slider": "curvature" },
+ { "uniform": "R", "slider": "R" },
+ { "uniform": "d", "slider": "d" },
+ { "uniform": "angle", "slider": "angle" },
+ { "uniform": "cornersize", "slider": "cornersize" },
+ { "uniform": "cornersmooth","slider": "cornersmooth" },
+ { "uniform": "overscan", "slider": "overscan" },
+ { "uniform": "aspect", "slider": "aspect" },
+ { "uniform": "CRTgamma", "slider": "CRTgamma" },
+ { "uniform": "monitorgamma","slider": "monitorgamma" },
+ { "uniform": "aperture_strength", "slider": "aperture_strength" }
+ ],
+
+ "input": [
+ { "sampler": "mpass_texture", "target": "screen" },
+ { "sampler": "mask_texture", "texture": "bgfx/chains/crt-geom/aperture_1_2_bgr.png", "selection": "Shadow mask" }
+ ],
+
+ "output": "output"
+ }
+ ]
+}
diff --git a/bgfx/effects/crt-geom/crt-geom-deluxe.json b/bgfx/effects/crt-geom/crt-geom-deluxe.json
new file mode 100644
index 00000000000..f3168d5ff1d
--- /dev/null
+++ b/bgfx/effects/crt-geom/crt-geom-deluxe.json
@@ -0,0 +1,43 @@
+{
+ "blend": {
+ "equation": "add",
+ "srcColor": "1",
+ "dstColor": "0",
+ "srcAlpha": "1",
+ "dstAlpha": "0"
+ },
+ "depth": {
+ "function": "always",
+ "writeenable": false
+ },
+ "cull": {
+ "mode": "none"
+ },
+ "write": {
+ "rgb": true,
+ "alpha": true
+ },
+ "vertex": "chains/crt-geom/vs_crt-geom",
+ "fragment": "chains/crt-geom/fs_crt-geom-deluxe",
+ "uniforms": [
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_tex_size1", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_quad_dims", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_rotation_type", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] },
+ { "name": "mpass_texture", "type": "int", "values": [ 0 ] },
+ { "name": "mask_texture", "type": "int", "values": [ 1 ] },
+ { "name": "blur_texture", "type": "int", "values": [ 1 ] },
+ { "name": "curvature", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] },
+ { "name": "CRTgamma", "type": "vec4", "values": [ 2.4, 0.0, 0.0, 0.0 ] },
+ { "name": "monitorgamma", "type": "vec4", "values": [ 2.2, 0.0, 0.0, 0.0 ] },
+ { "name": "overscan", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "aspect", "type": "vec4", "values": [ 1.0, 0.75,0.0, 0.0 ] },
+ { "name": "d", "type": "vec4", "values": [ 2.0, 0.0, 0.0, 0.0 ] },
+ { "name": "R", "type": "vec4", "values": [ 3.5, 0.0, 0.0, 0.0 ] },
+ { "name": "angle", "type": "vec4", "values": [ 0.0,-0.05,0.0, 0.0 ] },
+ { "name": "cornersize", "type": "vec4", "values": [ 0.01,0.0, 0.0, 0.0 ] },
+ { "name": "cornersmooth", "type": "vec4", "values": [ 1000.0,0.0,0.0,0.0 ] },
+ { "name": "aperture_strength", "type": "vec4", "values": [ 0.25,0.0,0.0,0.0 ] },
+ { "name": "halation", "type": "vec4", "values": [ 0.1,0.0,0.0,0.0 ] }
+ ]
+}
diff --git a/bgfx/effects/crt-geom/crt-geom.json b/bgfx/effects/crt-geom/crt-geom.json
new file mode 100644
index 00000000000..fe8e184a4ec
--- /dev/null
+++ b/bgfx/effects/crt-geom/crt-geom.json
@@ -0,0 +1,41 @@
+{
+ "blend": {
+ "equation": "add",
+ "srcColor": "1",
+ "dstColor": "0",
+ "srcAlpha": "1",
+ "dstAlpha": "0"
+ },
+ "depth": {
+ "function": "always",
+ "writeenable": false
+ },
+ "cull": {
+ "mode": "none"
+ },
+ "write": {
+ "rgb": true,
+ "alpha": true
+ },
+ "vertex": "chains/crt-geom/vs_crt-geom",
+ "fragment": "chains/crt-geom/fs_crt-geom",
+ "uniforms": [
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_tex_size1", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_quad_dims", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_rotation_type", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] },
+ { "name": "mpass_texture", "type": "int", "values": [ 0 ] },
+ { "name": "mask_texture", "type": "int", "values": [ 1 ] },
+ { "name": "curvature", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] },
+ { "name": "CRTgamma", "type": "vec4", "values": [ 2.4, 0.0, 0.0, 0.0 ] },
+ { "name": "monitorgamma", "type": "vec4", "values": [ 2.2, 0.0, 0.0, 0.0 ] },
+ { "name": "overscan", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "aspect", "type": "vec4", "values": [ 1.0, 0.75,0.0, 0.0 ] },
+ { "name": "d", "type": "vec4", "values": [ 2.0, 0.0, 0.0, 0.0 ] },
+ { "name": "R", "type": "vec4", "values": [ 3.5, 0.0, 0.0, 0.0 ] },
+ { "name": "angle", "type": "vec4", "values": [ 0.0,-0.05,0.0, 0.0 ] },
+ { "name": "cornersize", "type": "vec4", "values": [ 0.01,0.0, 0.0, 0.0 ] },
+ { "name": "cornersmooth", "type": "vec4", "values": [ 1000.0,0.0,0.0,0.0 ] },
+ { "name": "aperture_strength", "type": "vec4", "values": [ 0.25,0.0,0.0,0.0 ] }
+ ]
+}
diff --git a/bgfx/effects/crt-geom/gaussx.json b/bgfx/effects/crt-geom/gaussx.json
new file mode 100644
index 00000000000..28e9cff1b87
--- /dev/null
+++ b/bgfx/effects/crt-geom/gaussx.json
@@ -0,0 +1,29 @@
+{
+ "blend": {
+ "equation": "add",
+ "srcColor": "1",
+ "dstColor": "0",
+ "srcAlpha": "1",
+ "dstAlpha": "0"
+ },
+ "depth": {
+ "function": "always",
+ "writeenable": false
+ },
+ "cull": {
+ "mode": "none"
+ },
+ "write": {
+ "rgb": true,
+ "alpha": true
+ },
+ "vertex": "chains/crt-geom/vs_gaussx",
+ "fragment": "chains/crt-geom/fs_gaussx",
+ "uniforms": [
+ { "name": "s_tex", "type": "int", "values": [ 0 ] },
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_width", "type": "vec4", "values": [ 2.0, 0.0, 0.0, 0.0 ] },
+ { "name": "u_aspect", "type": "vec4", "values": [ 1.0,0.75, 0.0, 0.0 ] },
+ { "name": "u_gamma", "type": "vec4", "values": [ 2.2, 0.0, 0.0, 0.0 ] }
+ ]
+}
diff --git a/bgfx/effects/crt-geom/gaussy.json b/bgfx/effects/crt-geom/gaussy.json
new file mode 100644
index 00000000000..65e324f0930
--- /dev/null
+++ b/bgfx/effects/crt-geom/gaussy.json
@@ -0,0 +1,29 @@
+{
+ "blend": {
+ "equation": "add",
+ "srcColor": "1",
+ "dstColor": "0",
+ "srcAlpha": "1",
+ "dstAlpha": "0"
+ },
+ "depth": {
+ "function": "always",
+ "writeenable": false
+ },
+ "cull": {
+ "mode": "none"
+ },
+ "write": {
+ "rgb": true,
+ "alpha": true
+ },
+ "vertex": "chains/crt-geom/vs_gaussy",
+ "fragment": "chains/crt-geom/fs_gaussy",
+ "uniforms": [
+ { "name": "s_tex", "type": "int", "values": [ 0 ] },
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] },
+ { "name": "u_width", "type": "vec4", "values": [ 2.0, 0.0, 0.0, 0.0 ] },
+ { "name": "u_aspect", "type": "vec4", "values": [ 1.0,0.75, 0.0, 0.0 ] },
+ { "name": "u_gamma", "type": "vec4", "values": [ 2.2, 0.0, 0.0, 0.0 ] }
+ ]
+}
diff --git a/bgfx/effects/crt-geom/phosphor_apply.json b/bgfx/effects/crt-geom/phosphor_apply.json
new file mode 100644
index 00000000000..4353d0d9765
--- /dev/null
+++ b/bgfx/effects/crt-geom/phosphor_apply.json
@@ -0,0 +1,29 @@
+{
+ "blend": {
+ "equation": "add",
+ "srcColor": "1",
+ "dstColor": "0",
+ "srcAlpha": "1",
+ "dstAlpha": "0"
+ },
+ "depth": {
+ "function": "always",
+ "writeenable": false
+ },
+ "cull": {
+ "mode": "none"
+ },
+ "write": {
+ "rgb": true,
+ "alpha": true
+ },
+ "vertex": "chains/crt-geom/vs_phosphor_apply",
+ "fragment": "chains/crt-geom/fs_phosphor_apply",
+ "uniforms": [
+ { "name": "s_screen", "type": "int", "values": [ 0 ] },
+ { "name": "s_phosphor", "type": "int", "values": [ 1 ] },
+ { "name": "u_phosphor_power", "type": "vec4", "values": [ 1.3, 0.0, 0.0, 0.0 ] },
+ { "name": "u_phosphor_amplitude","type": "vec4", "values": [ 0.2, 0.0, 0.0, 0.0 ] },
+ { "name": "u_gamma", "type": "vec4", "values": [ 2.2, 0.0, 0.0, 0.0 ] }
+ ]
+}
diff --git a/bgfx/effects/crt-geom/phosphor_update.json b/bgfx/effects/crt-geom/phosphor_update.json
new file mode 100644
index 00000000000..c1808c8fb81
--- /dev/null
+++ b/bgfx/effects/crt-geom/phosphor_update.json
@@ -0,0 +1,29 @@
+{
+ "blend": {
+ "equation": "add",
+ "srcColor": "1",
+ "dstColor": "0",
+ "srcAlpha": "1",
+ "dstAlpha": "0"
+ },
+ "depth": {
+ "function": "always",
+ "writeenable": false
+ },
+ "cull": {
+ "mode": "none"
+ },
+ "write": {
+ "rgb": true,
+ "alpha": true
+ },
+ "vertex": "chains/crt-geom/vs_phosphor_update",
+ "fragment": "chains/crt-geom/fs_phosphor_update",
+ "uniforms": [
+ { "name": "s_screen", "type": "int", "values": [ 0 ] },
+ { "name": "s_phosphor", "type": "int", "values": [ 1 ] },
+ { "name": "u_phosphor_power", "type": "vec4", "values": [ 1.3, 0.0, 0.0, 0.0 ] },
+ { "name": "u_phosphor_amplitude","type": "vec4", "values": [ 0.2, 0.0, 0.0, 0.0 ] },
+ { "name": "u_gamma", "type": "vec4", "values": [ 2.2, 0.0, 0.0, 0.0 ] }
+ ]
+}
diff --git a/bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom-deluxe.bin b/bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom-deluxe.bin
new file mode 100644
index 00000000000..1e91cd50893
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom-deluxe.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom.bin b/bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom.bin
new file mode 100644
index 00000000000..4d4fa77e41f
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/fs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/fs_gaussx.bin b/bgfx/shaders/dx11/chains/crt-geom/fs_gaussx.bin
new file mode 100644
index 00000000000..c6f2bb3cbe7
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/fs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/fs_gaussy.bin b/bgfx/shaders/dx11/chains/crt-geom/fs_gaussy.bin
new file mode 100644
index 00000000000..d0e3b33f647
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/fs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_apply.bin b/bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_apply.bin
new file mode 100644
index 00000000000..51f7110a4dc
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_update.bin b/bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_update.bin
new file mode 100644
index 00000000000..ac5014661b4
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/fs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/vs_crt-geom.bin b/bgfx/shaders/dx11/chains/crt-geom/vs_crt-geom.bin
new file mode 100644
index 00000000000..00f36ed736d
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/vs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/vs_gaussx.bin b/bgfx/shaders/dx11/chains/crt-geom/vs_gaussx.bin
new file mode 100644
index 00000000000..fb6dc5e2aa2
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/vs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/vs_gaussy.bin b/bgfx/shaders/dx11/chains/crt-geom/vs_gaussy.bin
new file mode 100644
index 00000000000..a0acbeb0800
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/vs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_apply.bin b/bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_apply.bin
new file mode 100644
index 00000000000..6797da332d9
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_update.bin b/bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_update.bin
new file mode 100644
index 00000000000..6797da332d9
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/crt-geom/vs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom-deluxe.bin b/bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom-deluxe.bin
new file mode 100644
index 00000000000..5d1afeb8efa
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom-deluxe.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom.bin b/bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom.bin
new file mode 100644
index 00000000000..0b63f55a585
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/fs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/fs_gaussx.bin b/bgfx/shaders/dx9/chains/crt-geom/fs_gaussx.bin
new file mode 100644
index 00000000000..f6ae9a161f3
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/fs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/fs_gaussy.bin b/bgfx/shaders/dx9/chains/crt-geom/fs_gaussy.bin
new file mode 100644
index 00000000000..125ab63828d
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/fs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_apply.bin b/bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_apply.bin
new file mode 100644
index 00000000000..b4b4839d8b5
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_update.bin b/bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_update.bin
new file mode 100644
index 00000000000..384d2ddd48d
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/fs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/vs_crt-geom.bin b/bgfx/shaders/dx9/chains/crt-geom/vs_crt-geom.bin
new file mode 100644
index 00000000000..95d0b78bff4
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/vs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/vs_gaussx.bin b/bgfx/shaders/dx9/chains/crt-geom/vs_gaussx.bin
new file mode 100644
index 00000000000..878a259f8ab
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/vs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/vs_gaussy.bin b/bgfx/shaders/dx9/chains/crt-geom/vs_gaussy.bin
new file mode 100644
index 00000000000..3b1bbf6e556
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/vs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_apply.bin b/bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_apply.bin
new file mode 100644
index 00000000000..9f489e233ec
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_update.bin b/bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_update.bin
new file mode 100644
index 00000000000..9f489e233ec
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/crt-geom/vs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/fs_crt-geom-deluxe.bin b/bgfx/shaders/gles/chains/crt-geom/fs_crt-geom-deluxe.bin
new file mode 100644
index 00000000000..166388d7a7c
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/fs_crt-geom-deluxe.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/fs_crt-geom.bin b/bgfx/shaders/gles/chains/crt-geom/fs_crt-geom.bin
new file mode 100644
index 00000000000..20ffe658385
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/fs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/fs_gaussx.bin b/bgfx/shaders/gles/chains/crt-geom/fs_gaussx.bin
new file mode 100644
index 00000000000..691c710fd68
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/fs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/fs_gaussy.bin b/bgfx/shaders/gles/chains/crt-geom/fs_gaussy.bin
new file mode 100644
index 00000000000..988fc387f7d
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/fs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/fs_phosphor_apply.bin b/bgfx/shaders/gles/chains/crt-geom/fs_phosphor_apply.bin
new file mode 100644
index 00000000000..becc53dbbe3
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/fs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/fs_phosphor_update.bin b/bgfx/shaders/gles/chains/crt-geom/fs_phosphor_update.bin
new file mode 100644
index 00000000000..7e5f4e96765
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/fs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/vs_crt-geom.bin b/bgfx/shaders/gles/chains/crt-geom/vs_crt-geom.bin
new file mode 100644
index 00000000000..d245ebe9b2a
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/vs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/vs_gaussx.bin b/bgfx/shaders/gles/chains/crt-geom/vs_gaussx.bin
new file mode 100644
index 00000000000..f6c00846bc4
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/vs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/vs_gaussy.bin b/bgfx/shaders/gles/chains/crt-geom/vs_gaussy.bin
new file mode 100644
index 00000000000..38d918884fb
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/vs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/vs_phosphor_apply.bin b/bgfx/shaders/gles/chains/crt-geom/vs_phosphor_apply.bin
new file mode 100644
index 00000000000..73a140fcc40
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/vs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/crt-geom/vs_phosphor_update.bin b/bgfx/shaders/gles/chains/crt-geom/vs_phosphor_update.bin
new file mode 100644
index 00000000000..73a140fcc40
--- /dev/null
+++ b/bgfx/shaders/gles/chains/crt-geom/vs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom-deluxe.bin b/bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom-deluxe.bin
new file mode 100644
index 00000000000..0a54f384293
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom-deluxe.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom.bin b/bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom.bin
new file mode 100644
index 00000000000..7e03c559853
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/fs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/fs_gaussx.bin b/bgfx/shaders/glsl/chains/crt-geom/fs_gaussx.bin
new file mode 100644
index 00000000000..d83c7dea15d
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/fs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/fs_gaussy.bin b/bgfx/shaders/glsl/chains/crt-geom/fs_gaussy.bin
new file mode 100644
index 00000000000..0ab1151bba8
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/fs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_apply.bin b/bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_apply.bin
new file mode 100644
index 00000000000..5de0143b200
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_update.bin b/bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_update.bin
new file mode 100644
index 00000000000..50034bc156c
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/fs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/vs_crt-geom.bin b/bgfx/shaders/glsl/chains/crt-geom/vs_crt-geom.bin
new file mode 100644
index 00000000000..4abb00b0de8
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/vs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/vs_gaussx.bin b/bgfx/shaders/glsl/chains/crt-geom/vs_gaussx.bin
new file mode 100644
index 00000000000..ebf8e8e4e87
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/vs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/vs_gaussy.bin b/bgfx/shaders/glsl/chains/crt-geom/vs_gaussy.bin
new file mode 100644
index 00000000000..3461941df07
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/vs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_apply.bin b/bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_apply.bin
new file mode 100644
index 00000000000..a02931f846e
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_update.bin b/bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_update.bin
new file mode 100644
index 00000000000..a02931f846e
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/crt-geom/vs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/fs_crt-geom-deluxe.bin b/bgfx/shaders/metal/chains/crt-geom/fs_crt-geom-deluxe.bin
new file mode 100644
index 00000000000..9b916b93043
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/fs_crt-geom-deluxe.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/fs_crt-geom.bin b/bgfx/shaders/metal/chains/crt-geom/fs_crt-geom.bin
new file mode 100644
index 00000000000..cff6b7e6b6c
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/fs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/fs_gaussx.bin b/bgfx/shaders/metal/chains/crt-geom/fs_gaussx.bin
new file mode 100644
index 00000000000..20840efaf16
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/fs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/fs_gaussy.bin b/bgfx/shaders/metal/chains/crt-geom/fs_gaussy.bin
new file mode 100644
index 00000000000..b2487180322
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/fs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/fs_phosphor_apply.bin b/bgfx/shaders/metal/chains/crt-geom/fs_phosphor_apply.bin
new file mode 100644
index 00000000000..2714075cdeb
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/fs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/fs_phosphor_update.bin b/bgfx/shaders/metal/chains/crt-geom/fs_phosphor_update.bin
new file mode 100644
index 00000000000..9460ce0f08e
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/fs_phosphor_update.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/vs_crt-geom.bin b/bgfx/shaders/metal/chains/crt-geom/vs_crt-geom.bin
new file mode 100644
index 00000000000..f7d1102e36b
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/vs_crt-geom.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/vs_gaussx.bin b/bgfx/shaders/metal/chains/crt-geom/vs_gaussx.bin
new file mode 100644
index 00000000000..35c8a2f643d
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/vs_gaussx.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/vs_gaussy.bin b/bgfx/shaders/metal/chains/crt-geom/vs_gaussy.bin
new file mode 100644
index 00000000000..1f488205a1a
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/vs_gaussy.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/vs_phosphor_apply.bin b/bgfx/shaders/metal/chains/crt-geom/vs_phosphor_apply.bin
new file mode 100644
index 00000000000..b1ba0bf8201
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/vs_phosphor_apply.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/crt-geom/vs_phosphor_update.bin b/bgfx/shaders/metal/chains/crt-geom/vs_phosphor_update.bin
new file mode 100644
index 00000000000..b1ba0bf8201
--- /dev/null
+++ b/bgfx/shaders/metal/chains/crt-geom/vs_phosphor_update.bin
Binary files differ