summaryrefslogtreecommitdiffstatshomepage
path: root/bgfx/chains
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/chains
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/chains')
-rw-r--r--bgfx/chains/crt-geom-deluxe.json238
-rw-r--r--bgfx/chains/crt-geom.json134
2 files changed, 372 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"
+ }
+ ]
+}