summaryrefslogtreecommitdiffstatshomepage
path: root/bgfx
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-04-18 19:39:46 +0200
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-04-18 19:40:07 +0200
commitc64b88bc78a4810ce0c75eb4d6651e5a26cc2bad (patch)
tree5c98d0e527dfce7228b51215d69d58e95fc2e20d /bgfx
parent82188dee99ec811589a3b4f6838298408d96441a (diff)
-Added HQ2x, HQ3x and HQ4x shaders. [MooglyGuy,Jules Blok,Cameron Zemek,Maxim Stepin]
Diffstat (limited to 'bgfx')
-rw-r--r--bgfx/chains/hq2x.json60
-rw-r--r--bgfx/chains/hq3x.json60
-rw-r--r--bgfx/chains/hq4x.json60
-rw-r--r--bgfx/effects/hq2x/blit.json121
-rw-r--r--bgfx/effects/hq2x/hq2x.json29
-rw-r--r--bgfx/effects/hq3x/blit.json121
-rw-r--r--bgfx/effects/hq3x/hq3x.json29
-rw-r--r--bgfx/effects/hq4x/blit.json121
-rw-r--r--bgfx/effects/hq4x/hq4x.json29
-rw-r--r--bgfx/shaders/dx11/chains/hq2x/fs_blit.binbin0 -> 396 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq2x/fs_hq2x.binbin0 -> 6600 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq2x/vs_blit.binbin0 -> 575 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq2x/vs_hq2x.binbin0 -> 909 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq3x/fs_blit.binbin0 -> 396 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq3x/fs_hq3x.binbin0 -> 6612 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq3x/vs_blit.binbin0 -> 575 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq3x/vs_hq3x.binbin0 -> 909 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq4x/fs_blit.binbin0 -> 396 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq4x/fs_hq4x.binbin0 -> 6612 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq4x/vs_blit.binbin0 -> 575 bytes
-rw-r--r--bgfx/shaders/dx11/chains/hq4x/vs_hq4x.binbin0 -> 909 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq2x/fs_blit.binbin0 -> 241 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq2x/fs_hq2x.binbin0 -> 3709 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq2x/vs_blit.binbin0 -> 330 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq2x/vs_hq2x.binbin0 -> 576 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq3x/fs_blit.binbin0 -> 241 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq3x/fs_hq3x.binbin0 -> 3733 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq3x/vs_blit.binbin0 -> 330 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq3x/vs_hq3x.binbin0 -> 576 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq4x/fs_blit.binbin0 -> 241 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq4x/fs_hq4x.binbin0 -> 3709 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq4x/vs_blit.binbin0 -> 330 bytes
-rw-r--r--bgfx/shaders/dx9/chains/hq4x/vs_hq4x.binbin0 -> 576 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq2x/fs_blit.binbin0 -> 238 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq2x/fs_hq2x.binbin0 -> 15856 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq2x/vs_blit.binbin0 -> 419 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq2x/vs_hq2x.binbin0 -> 1178 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq3x/fs_blit.binbin0 -> 238 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq3x/fs_hq3x.binbin0 -> 15861 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq3x/vs_blit.binbin0 -> 419 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq3x/vs_hq3x.binbin0 -> 1178 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq4x/fs_blit.binbin0 -> 238 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq4x/fs_hq4x.binbin0 -> 15861 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq4x/vs_blit.binbin0 -> 419 bytes
-rw-r--r--bgfx/shaders/gles/chains/hq4x/vs_hq4x.binbin0 -> 1178 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq2x/fs_blit.binbin0 -> 181 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq2x/fs_hq2x.binbin0 -> 15054 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq2x/vs_blit.binbin0 -> 377 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq2x/vs_hq2x.binbin0 -> 1082 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq3x/fs_blit.binbin0 -> 181 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq3x/fs_hq3x.binbin0 -> 15059 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq3x/vs_blit.binbin0 -> 377 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq3x/vs_hq3x.binbin0 -> 1082 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq4x/fs_blit.binbin0 -> 181 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq4x/fs_hq4x.binbin0 -> 15059 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq4x/vs_blit.binbin0 -> 377 bytes
-rw-r--r--bgfx/shaders/glsl/chains/hq4x/vs_hq4x.binbin0 -> 1082 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq2x/fs_blit.binbin0 -> 634 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq2x/fs_hq2x.binbin0 -> 17344 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq2x/vs_blit.binbin0 -> 757 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq2x/vs_hq2x.binbin0 -> 1487 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq3x/fs_blit.binbin0 -> 634 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq3x/fs_hq3x.binbin0 -> 17349 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq3x/vs_blit.binbin0 -> 757 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq3x/vs_hq3x.binbin0 -> 1487 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq4x/fs_blit.binbin0 -> 634 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq4x/fs_hq4x.binbin0 -> 17349 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq4x/vs_blit.binbin0 -> 757 bytes
-rw-r--r--bgfx/shaders/metal/chains/hq4x/vs_hq4x.binbin0 -> 1487 bytes
69 files changed, 630 insertions, 0 deletions
diff --git a/bgfx/chains/hq2x.json b/bgfx/chains/hq2x.json
new file mode 100644
index 00000000000..20303a64c90
--- /dev/null
+++ b/bgfx/chains/hq2x.json
@@ -0,0 +1,60 @@
+// license:LGPL-2.1+
+// copyright-holders:Jules Blok,Cameron Zemek,Maxim Stepin
+
+/*
+* Copyright (C) 2003 Maxim Stepin ( maxst@hiend3d.com )
+*
+* Copyright (C) 2010 Cameron Zemek ( grom@zeminvaders.net )
+*
+* Copyright (C) 2014 Jules Blok ( jules@aerix.nl )
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+{
+ "name": "HQ2x",
+ "author": "libretro",
+ "targets": [
+ {
+ "name": "scaled_out",
+ "mode": "guest",
+ "scale": 2,
+ "doublebuffer": true
+ },
+ {
+ "name": "internal",
+ "mode": "native",
+ "doublebuffer": true
+ }
+ ],
+ "passes": [
+ {
+ "effect": "hq2x/hq2x",
+ "name": "HQ2x pass",
+ "input": [
+ { "sampler": "decal", "texture": "screen" },
+ { "sampler": "LUT", "texture": "bgfx/chains/hq2x.png", "bilinear": true }
+ ],
+ "output": "scaled_out"
+ },
+ { "effect": "hq2x/blit",
+ "name": "Final Blit",
+ "input": [
+ { "sampler": "s_tex", "target": "scaled_out" }
+ ],
+ "output": "output"
+ }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/chains/hq3x.json b/bgfx/chains/hq3x.json
new file mode 100644
index 00000000000..1f767b68825
--- /dev/null
+++ b/bgfx/chains/hq3x.json
@@ -0,0 +1,60 @@
+// license:LGPL-2.1+
+// copyright-holders:Jules Blok,Cameron Zemek,Maxim Stepin
+
+/*
+* Copyright (C) 2003 Maxim Stepin ( maxst@hiend3d.com )
+*
+* Copyright (C) 2010 Cameron Zemek ( grom@zeminvaders.net )
+*
+* Copyright (C) 2014 Jules Blok ( jules@aerix.nl )
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+{
+ "name": "HQ3x",
+ "author": "libretro",
+ "targets": [
+ {
+ "name": "scaled_out",
+ "mode": "guest",
+ "scale": 2,
+ "doublebuffer": true
+ },
+ {
+ "name": "internal",
+ "mode": "native",
+ "doublebuffer": true
+ }
+ ],
+ "passes": [
+ {
+ "effect": "hq3x/hq3x",
+ "name": "HQ3x pass",
+ "input": [
+ { "sampler": "decal", "texture": "screen" },
+ { "sampler": "LUT", "texture": "bgfx/chains/hq3x.png", "bilinear": false }
+ ],
+ "output": "scaled_out"
+ },
+ { "effect": "hq3x/blit",
+ "name": "Final Blit",
+ "input": [
+ { "sampler": "s_tex", "target": "scaled_out" }
+ ],
+ "output": "output"
+ }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/chains/hq4x.json b/bgfx/chains/hq4x.json
new file mode 100644
index 00000000000..9232966ecc4
--- /dev/null
+++ b/bgfx/chains/hq4x.json
@@ -0,0 +1,60 @@
+// license:LGPL-2.1+
+// copyright-holders:Jules Blok,Cameron Zemek,Maxim Stepin
+
+/*
+* Copyright (C) 2003 Maxim Stepin ( maxst@hiend3d.com )
+*
+* Copyright (C) 2010 Cameron Zemek ( grom@zeminvaders.net )
+*
+* Copyright (C) 2014 Jules Blok ( jules@aerix.nl )
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+{
+ "name": "HQ4x",
+ "author": "libretro",
+ "targets": [
+ {
+ "name": "scaled_out",
+ "mode": "guest",
+ "scale": 2,
+ "doublebuffer": true
+ },
+ {
+ "name": "internal",
+ "mode": "native",
+ "doublebuffer": true
+ }
+ ],
+ "passes": [
+ {
+ "effect": "hq4x/hq4x",
+ "name": "HQ4x pass",
+ "input": [
+ { "sampler": "decal", "texture": "screen" },
+ { "sampler": "LUT", "texture": "bgfx/chains/hq4x.png", "bilinear": false }
+ ],
+ "output": "scaled_out"
+ },
+ { "effect": "hq4x/blit",
+ "name": "Final Blit",
+ "input": [
+ { "sampler": "s_tex", "target": "scaled_out" }
+ ],
+ "output": "output"
+ }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/effects/hq2x/blit.json b/bgfx/effects/hq2x/blit.json
new file mode 100644
index 00000000000..9ea3078b35a
--- /dev/null
+++ b/bgfx/effects/hq2x/blit.json
@@ -0,0 +1,121 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+//============================================================
+//
+// blit.json: A simple texture-to-target copy.
+//
+//============================================================
+{
+ // blend (required): The blend state for this effect.
+ "blend": {
+ // equation (optional): What equation to perform on the source and destination blend values.
+ // values: "add", "sub", "revSub", "min", "max"
+ // default: "add"
+ //
+ // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub"
+ "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"
+ // 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": "srcalpha",
+ "dstColor": "1-srcalpha",
+ "srcAlpha": "srcalpha",
+ "dstAlpha": "1-srcalpha"
+ },
+
+ // depth (required): The depth state for this effect.
+ "depth": {
+ // function (optional): The depth function to use when drawing.
+ // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always"
+ // default: "always"
+ "function": "always",
+
+ // writeenable (optional): Whether to store Z-buffer data.
+ // values: true, false
+ // default: false
+ "writeenable": false
+ },
+
+ // cull (required): The cull mode for this effect.
+ "cull": {
+ // mode (optional): What winding, if any, to cull.
+ // values: "none", "cw", "ccw"
+ // default: "ccw"
+ //
+ // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw"
+ "mode": "none"
+ },
+
+ // write (required): Write enable for color and alpha channels.
+ "write": {
+ // rgb (optional): Whether to store color data when drawing.
+ // values: true, false
+ // default: false
+ "rgb": true,
+
+ // alpha (optional): Whether to store alpha data when drawing.
+ // values: true, false
+ // default: false
+ "alpha": true
+ },
+
+ // vertex (required): The vertex shader to use when drawing.
+ // value: A string containing the path and name of a shader file to use, minus the extension.
+ "vertex": "chains/hq2x/vs_blit",
+
+ // pixel/fragment (required): The pixel or fragment shader to use when drawing.
+ // value: A string containing the path and name of a shader file to use, minus the extension.
+ "fragment": "chains/hq2x/fs_blit",
+
+ // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist.
+ "uniforms": [
+ {
+ // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader.
+ // value: A string containing the name of the uniform as described above.
+ //
+ // NOTE: Some names correspond to special values that will be automatically filled by the BGFX
+ // code if they are used by the shader. These names are:
+ // "u_screen_dims"
+ // The dimensions of the first texture input if present, otherwise the dimensions of the output window.
+ // Valid values: xy
+ // "u_inv_screen_dims"
+ // The reciprocal of u_screen_dims.
+ // Valid values: xy
+ // "u_source_dims"
+ // The size, in pixels, of the screen texture incoming to the chain.
+ // Valid values: xy
+ // "u_rotation_type"
+ // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270.
+ // Valid values: x
+ // "u_swap_xy"
+ // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false.
+ // Valid values: x
+ // "u_quad_dims"
+ // The dimensions, in pixels, occupied by this one screen primitive itself in the output window.
+ // Valid values: xy
+ // "u_tex_sizeN"
+ // The dimensions, in pixels, of the texture in input pair N. Starts at 0.
+ // valid values: xy
+ "name": "s_tex",
+
+ // type (required): The type of the uniform.
+ // values: "int", "vec4", "mat3", "mat4"
+ //
+ // Note: "int" should only be used for samplers.
+ "type": "int",
+
+ // values (required): The array of numbers with which to initialize the uniform.
+ // value: A JSON array containin the correct amount of numbers to initialize a uniform of the
+ // above-specified type. The following size rules should be followed:
+ // "int": 1 float
+ // "vec4": 4 floats
+ // "mat3": 9 floats
+ // "mat4": 16 floats
+ "values": [ 1.0 ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/effects/hq2x/hq2x.json b/bgfx/effects/hq2x/hq2x.json
new file mode 100644
index 00000000000..9b67b562b02
--- /dev/null
+++ b/bgfx/effects/hq2x/hq2x.json
@@ -0,0 +1,29 @@
+// license:LGPL-2.1+
+// copyright-holders:Jules Blok,Cameron Zemek,Maxim Stepin
+{
+ "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/hq2x/vs_hq2x",
+ "fragment": "chains/hq2x/fs_hq2x",
+ "uniforms": [
+ { "name": "decal", "type": "int", "values": [ 1.0 ] },
+ { "name": "LUT", "type": "int", "values": [ 1.0 ] },
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/effects/hq3x/blit.json b/bgfx/effects/hq3x/blit.json
new file mode 100644
index 00000000000..a3c21b9cf67
--- /dev/null
+++ b/bgfx/effects/hq3x/blit.json
@@ -0,0 +1,121 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+//============================================================
+//
+// blit.json: A simple texture-to-target copy.
+//
+//============================================================
+{
+ // blend (required): The blend state for this effect.
+ "blend": {
+ // equation (optional): What equation to perform on the source and destination blend values.
+ // values: "add", "sub", "revSub", "min", "max"
+ // default: "add"
+ //
+ // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub"
+ "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"
+ // 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": "srcalpha",
+ "dstColor": "1-srcalpha",
+ "srcAlpha": "srcalpha",
+ "dstAlpha": "1-srcalpha"
+ },
+
+ // depth (required): The depth state for this effect.
+ "depth": {
+ // function (optional): The depth function to use when drawing.
+ // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always"
+ // default: "always"
+ "function": "always",
+
+ // writeenable (optional): Whether to store Z-buffer data.
+ // values: true, false
+ // default: false
+ "writeenable": false
+ },
+
+ // cull (required): The cull mode for this effect.
+ "cull": {
+ // mode (optional): What winding, if any, to cull.
+ // values: "none", "cw", "ccw"
+ // default: "ccw"
+ //
+ // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw"
+ "mode": "none"
+ },
+
+ // write (required): Write enable for color and alpha channels.
+ "write": {
+ // rgb (optional): Whether to store color data when drawing.
+ // values: true, false
+ // default: false
+ "rgb": true,
+
+ // alpha (optional): Whether to store alpha data when drawing.
+ // values: true, false
+ // default: false
+ "alpha": true
+ },
+
+ // vertex (required): The vertex shader to use when drawing.
+ // value: A string containing the path and name of a shader file to use, minus the extension.
+ "vertex": "chains/hq3x/vs_blit",
+
+ // pixel/fragment (required): The pixel or fragment shader to use when drawing.
+ // value: A string containing the path and name of a shader file to use, minus the extension.
+ "fragment": "chains/hq3x/fs_blit",
+
+ // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist.
+ "uniforms": [
+ {
+ // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader.
+ // value: A string containing the name of the uniform as described above.
+ //
+ // NOTE: Some names correspond to special values that will be automatically filled by the BGFX
+ // code if they are used by the shader. These names are:
+ // "u_screen_dims"
+ // The dimensions of the first texture input if present, otherwise the dimensions of the output window.
+ // Valid values: xy
+ // "u_inv_screen_dims"
+ // The reciprocal of u_screen_dims.
+ // Valid values: xy
+ // "u_source_dims"
+ // The size, in pixels, of the screen texture incoming to the chain.
+ // Valid values: xy
+ // "u_rotation_type"
+ // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270.
+ // Valid values: x
+ // "u_swap_xy"
+ // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false.
+ // Valid values: x
+ // "u_quad_dims"
+ // The dimensions, in pixels, occupied by this one screen primitive itself in the output window.
+ // Valid values: xy
+ // "u_tex_sizeN"
+ // The dimensions, in pixels, of the texture in input pair N. Starts at 0.
+ // valid values: xy
+ "name": "s_tex",
+
+ // type (required): The type of the uniform.
+ // values: "int", "vec4", "mat3", "mat4"
+ //
+ // Note: "int" should only be used for samplers.
+ "type": "int",
+
+ // values (required): The array of numbers with which to initialize the uniform.
+ // value: A JSON array containin the correct amount of numbers to initialize a uniform of the
+ // above-specified type. The following size rules should be followed:
+ // "int": 1 float
+ // "vec4": 4 floats
+ // "mat3": 9 floats
+ // "mat4": 16 floats
+ "values": [ 1.0 ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/effects/hq3x/hq3x.json b/bgfx/effects/hq3x/hq3x.json
new file mode 100644
index 00000000000..4cc61706dce
--- /dev/null
+++ b/bgfx/effects/hq3x/hq3x.json
@@ -0,0 +1,29 @@
+// license:LGPL-2.1+
+// copyright-holders:Jules Blok,Cameron Zemek,Maxim Stepin
+{
+ "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/hq3x/vs_hq3x",
+ "fragment": "chains/hq3x/fs_hq3x",
+ "uniforms": [
+ { "name": "decal", "type": "int", "values": [ 1.0 ] },
+ { "name": "LUT", "type": "int", "values": [ 1.0 ] },
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/effects/hq4x/blit.json b/bgfx/effects/hq4x/blit.json
new file mode 100644
index 00000000000..ddaab93e2ea
--- /dev/null
+++ b/bgfx/effects/hq4x/blit.json
@@ -0,0 +1,121 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+//============================================================
+//
+// blit.json: A simple texture-to-target copy.
+//
+//============================================================
+{
+ // blend (required): The blend state for this effect.
+ "blend": {
+ // equation (optional): What equation to perform on the source and destination blend values.
+ // values: "add", "sub", "revSub", "min", "max"
+ // default: "add"
+ //
+ // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub"
+ "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"
+ // 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": "srcalpha",
+ "dstColor": "1-srcalpha",
+ "srcAlpha": "srcalpha",
+ "dstAlpha": "1-srcalpha"
+ },
+
+ // depth (required): The depth state for this effect.
+ "depth": {
+ // function (optional): The depth function to use when drawing.
+ // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always"
+ // default: "always"
+ "function": "always",
+
+ // writeenable (optional): Whether to store Z-buffer data.
+ // values: true, false
+ // default: false
+ "writeenable": false
+ },
+
+ // cull (required): The cull mode for this effect.
+ "cull": {
+ // mode (optional): What winding, if any, to cull.
+ // values: "none", "cw", "ccw"
+ // default: "ccw"
+ //
+ // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw"
+ "mode": "none"
+ },
+
+ // write (required): Write enable for color and alpha channels.
+ "write": {
+ // rgb (optional): Whether to store color data when drawing.
+ // values: true, false
+ // default: false
+ "rgb": true,
+
+ // alpha (optional): Whether to store alpha data when drawing.
+ // values: true, false
+ // default: false
+ "alpha": true
+ },
+
+ // vertex (required): The vertex shader to use when drawing.
+ // value: A string containing the path and name of a shader file to use, minus the extension.
+ "vertex": "chains/hq4x/vs_blit",
+
+ // pixel/fragment (required): The pixel or fragment shader to use when drawing.
+ // value: A string containing the path and name of a shader file to use, minus the extension.
+ "fragment": "chains/hq4x/fs_blit",
+
+ // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist.
+ "uniforms": [
+ {
+ // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader.
+ // value: A string containing the name of the uniform as described above.
+ //
+ // NOTE: Some names correspond to special values that will be automatically filled by the BGFX
+ // code if they are used by the shader. These names are:
+ // "u_screen_dims"
+ // The dimensions of the first texture input if present, otherwise the dimensions of the output window.
+ // Valid values: xy
+ // "u_inv_screen_dims"
+ // The reciprocal of u_screen_dims.
+ // Valid values: xy
+ // "u_source_dims"
+ // The size, in pixels, of the screen texture incoming to the chain.
+ // Valid values: xy
+ // "u_rotation_type"
+ // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270.
+ // Valid values: x
+ // "u_swap_xy"
+ // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false.
+ // Valid values: x
+ // "u_quad_dims"
+ // The dimensions, in pixels, occupied by this one screen primitive itself in the output window.
+ // Valid values: xy
+ // "u_tex_sizeN"
+ // The dimensions, in pixels, of the texture in input pair N. Starts at 0.
+ // valid values: xy
+ "name": "s_tex",
+
+ // type (required): The type of the uniform.
+ // values: "int", "vec4", "mat3", "mat4"
+ //
+ // Note: "int" should only be used for samplers.
+ "type": "int",
+
+ // values (required): The array of numbers with which to initialize the uniform.
+ // value: A JSON array containin the correct amount of numbers to initialize a uniform of the
+ // above-specified type. The following size rules should be followed:
+ // "int": 1 float
+ // "vec4": 4 floats
+ // "mat3": 9 floats
+ // "mat4": 16 floats
+ "values": [ 1.0 ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/effects/hq4x/hq4x.json b/bgfx/effects/hq4x/hq4x.json
new file mode 100644
index 00000000000..8d2221896ce
--- /dev/null
+++ b/bgfx/effects/hq4x/hq4x.json
@@ -0,0 +1,29 @@
+// license:LGPL-2.1+
+// copyright-holders:Jules Blok,Cameron Zemek,Maxim Stepin
+{
+ "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/hq4x/vs_hq4x",
+ "fragment": "chains/hq4x/fs_hq4x",
+ "uniforms": [
+ { "name": "decal", "type": "int", "values": [ 1.0 ] },
+ { "name": "LUT", "type": "int", "values": [ 1.0 ] },
+ { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] }
+ ]
+} \ No newline at end of file
diff --git a/bgfx/shaders/dx11/chains/hq2x/fs_blit.bin b/bgfx/shaders/dx11/chains/hq2x/fs_blit.bin
new file mode 100644
index 00000000000..80d85fb1107
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq2x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq2x/fs_hq2x.bin b/bgfx/shaders/dx11/chains/hq2x/fs_hq2x.bin
new file mode 100644
index 00000000000..cdce652045f
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq2x/fs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq2x/vs_blit.bin b/bgfx/shaders/dx11/chains/hq2x/vs_blit.bin
new file mode 100644
index 00000000000..b0bebf9da4c
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq2x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq2x/vs_hq2x.bin b/bgfx/shaders/dx11/chains/hq2x/vs_hq2x.bin
new file mode 100644
index 00000000000..5b037b2bfe8
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq2x/vs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq3x/fs_blit.bin b/bgfx/shaders/dx11/chains/hq3x/fs_blit.bin
new file mode 100644
index 00000000000..80d85fb1107
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq3x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq3x/fs_hq3x.bin b/bgfx/shaders/dx11/chains/hq3x/fs_hq3x.bin
new file mode 100644
index 00000000000..29d6a5c2c3d
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq3x/fs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq3x/vs_blit.bin b/bgfx/shaders/dx11/chains/hq3x/vs_blit.bin
new file mode 100644
index 00000000000..b0bebf9da4c
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq3x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq3x/vs_hq3x.bin b/bgfx/shaders/dx11/chains/hq3x/vs_hq3x.bin
new file mode 100644
index 00000000000..5b037b2bfe8
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq3x/vs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq4x/fs_blit.bin b/bgfx/shaders/dx11/chains/hq4x/fs_blit.bin
new file mode 100644
index 00000000000..80d85fb1107
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq4x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq4x/fs_hq4x.bin b/bgfx/shaders/dx11/chains/hq4x/fs_hq4x.bin
new file mode 100644
index 00000000000..7ebeaab6cd7
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq4x/fs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq4x/vs_blit.bin b/bgfx/shaders/dx11/chains/hq4x/vs_blit.bin
new file mode 100644
index 00000000000..b0bebf9da4c
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq4x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx11/chains/hq4x/vs_hq4x.bin b/bgfx/shaders/dx11/chains/hq4x/vs_hq4x.bin
new file mode 100644
index 00000000000..5b037b2bfe8
--- /dev/null
+++ b/bgfx/shaders/dx11/chains/hq4x/vs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq2x/fs_blit.bin b/bgfx/shaders/dx9/chains/hq2x/fs_blit.bin
new file mode 100644
index 00000000000..ef8fa0730c3
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq2x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq2x/fs_hq2x.bin b/bgfx/shaders/dx9/chains/hq2x/fs_hq2x.bin
new file mode 100644
index 00000000000..7bebafd9962
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq2x/fs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq2x/vs_blit.bin b/bgfx/shaders/dx9/chains/hq2x/vs_blit.bin
new file mode 100644
index 00000000000..ea94c83e62d
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq2x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq2x/vs_hq2x.bin b/bgfx/shaders/dx9/chains/hq2x/vs_hq2x.bin
new file mode 100644
index 00000000000..de5213e137f
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq2x/vs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq3x/fs_blit.bin b/bgfx/shaders/dx9/chains/hq3x/fs_blit.bin
new file mode 100644
index 00000000000..ef8fa0730c3
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq3x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq3x/fs_hq3x.bin b/bgfx/shaders/dx9/chains/hq3x/fs_hq3x.bin
new file mode 100644
index 00000000000..6151be64f23
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq3x/fs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq3x/vs_blit.bin b/bgfx/shaders/dx9/chains/hq3x/vs_blit.bin
new file mode 100644
index 00000000000..ea94c83e62d
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq3x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq3x/vs_hq3x.bin b/bgfx/shaders/dx9/chains/hq3x/vs_hq3x.bin
new file mode 100644
index 00000000000..de5213e137f
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq3x/vs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq4x/fs_blit.bin b/bgfx/shaders/dx9/chains/hq4x/fs_blit.bin
new file mode 100644
index 00000000000..ef8fa0730c3
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq4x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq4x/fs_hq4x.bin b/bgfx/shaders/dx9/chains/hq4x/fs_hq4x.bin
new file mode 100644
index 00000000000..55d09ab2827
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq4x/fs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq4x/vs_blit.bin b/bgfx/shaders/dx9/chains/hq4x/vs_blit.bin
new file mode 100644
index 00000000000..ea94c83e62d
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq4x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/dx9/chains/hq4x/vs_hq4x.bin b/bgfx/shaders/dx9/chains/hq4x/vs_hq4x.bin
new file mode 100644
index 00000000000..de5213e137f
--- /dev/null
+++ b/bgfx/shaders/dx9/chains/hq4x/vs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq2x/fs_blit.bin b/bgfx/shaders/gles/chains/hq2x/fs_blit.bin
new file mode 100644
index 00000000000..22e2f0c23d0
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq2x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq2x/fs_hq2x.bin b/bgfx/shaders/gles/chains/hq2x/fs_hq2x.bin
new file mode 100644
index 00000000000..2b008d10a52
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq2x/fs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq2x/vs_blit.bin b/bgfx/shaders/gles/chains/hq2x/vs_blit.bin
new file mode 100644
index 00000000000..9dd618de8a0
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq2x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq2x/vs_hq2x.bin b/bgfx/shaders/gles/chains/hq2x/vs_hq2x.bin
new file mode 100644
index 00000000000..413d1e8bd20
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq2x/vs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq3x/fs_blit.bin b/bgfx/shaders/gles/chains/hq3x/fs_blit.bin
new file mode 100644
index 00000000000..22e2f0c23d0
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq3x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq3x/fs_hq3x.bin b/bgfx/shaders/gles/chains/hq3x/fs_hq3x.bin
new file mode 100644
index 00000000000..7494371f7eb
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq3x/fs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq3x/vs_blit.bin b/bgfx/shaders/gles/chains/hq3x/vs_blit.bin
new file mode 100644
index 00000000000..9dd618de8a0
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq3x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq3x/vs_hq3x.bin b/bgfx/shaders/gles/chains/hq3x/vs_hq3x.bin
new file mode 100644
index 00000000000..413d1e8bd20
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq3x/vs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq4x/fs_blit.bin b/bgfx/shaders/gles/chains/hq4x/fs_blit.bin
new file mode 100644
index 00000000000..22e2f0c23d0
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq4x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq4x/fs_hq4x.bin b/bgfx/shaders/gles/chains/hq4x/fs_hq4x.bin
new file mode 100644
index 00000000000..c215c28b740
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq4x/fs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq4x/vs_blit.bin b/bgfx/shaders/gles/chains/hq4x/vs_blit.bin
new file mode 100644
index 00000000000..9dd618de8a0
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq4x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/gles/chains/hq4x/vs_hq4x.bin b/bgfx/shaders/gles/chains/hq4x/vs_hq4x.bin
new file mode 100644
index 00000000000..413d1e8bd20
--- /dev/null
+++ b/bgfx/shaders/gles/chains/hq4x/vs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq2x/fs_blit.bin b/bgfx/shaders/glsl/chains/hq2x/fs_blit.bin
new file mode 100644
index 00000000000..db0fe2b487b
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq2x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq2x/fs_hq2x.bin b/bgfx/shaders/glsl/chains/hq2x/fs_hq2x.bin
new file mode 100644
index 00000000000..7f3b9f36263
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq2x/fs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq2x/vs_blit.bin b/bgfx/shaders/glsl/chains/hq2x/vs_blit.bin
new file mode 100644
index 00000000000..af6c9349f41
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq2x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq2x/vs_hq2x.bin b/bgfx/shaders/glsl/chains/hq2x/vs_hq2x.bin
new file mode 100644
index 00000000000..789e990106d
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq2x/vs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq3x/fs_blit.bin b/bgfx/shaders/glsl/chains/hq3x/fs_blit.bin
new file mode 100644
index 00000000000..db0fe2b487b
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq3x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq3x/fs_hq3x.bin b/bgfx/shaders/glsl/chains/hq3x/fs_hq3x.bin
new file mode 100644
index 00000000000..b74aea5e0af
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq3x/fs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq3x/vs_blit.bin b/bgfx/shaders/glsl/chains/hq3x/vs_blit.bin
new file mode 100644
index 00000000000..af6c9349f41
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq3x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq3x/vs_hq3x.bin b/bgfx/shaders/glsl/chains/hq3x/vs_hq3x.bin
new file mode 100644
index 00000000000..789e990106d
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq3x/vs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq4x/fs_blit.bin b/bgfx/shaders/glsl/chains/hq4x/fs_blit.bin
new file mode 100644
index 00000000000..db0fe2b487b
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq4x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq4x/fs_hq4x.bin b/bgfx/shaders/glsl/chains/hq4x/fs_hq4x.bin
new file mode 100644
index 00000000000..86a90e7fa48
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq4x/fs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq4x/vs_blit.bin b/bgfx/shaders/glsl/chains/hq4x/vs_blit.bin
new file mode 100644
index 00000000000..af6c9349f41
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq4x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/glsl/chains/hq4x/vs_hq4x.bin b/bgfx/shaders/glsl/chains/hq4x/vs_hq4x.bin
new file mode 100644
index 00000000000..789e990106d
--- /dev/null
+++ b/bgfx/shaders/glsl/chains/hq4x/vs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq2x/fs_blit.bin b/bgfx/shaders/metal/chains/hq2x/fs_blit.bin
new file mode 100644
index 00000000000..6a3da392480
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq2x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq2x/fs_hq2x.bin b/bgfx/shaders/metal/chains/hq2x/fs_hq2x.bin
new file mode 100644
index 00000000000..434944fc7f3
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq2x/fs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq2x/vs_blit.bin b/bgfx/shaders/metal/chains/hq2x/vs_blit.bin
new file mode 100644
index 00000000000..122b7dee5c3
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq2x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq2x/vs_hq2x.bin b/bgfx/shaders/metal/chains/hq2x/vs_hq2x.bin
new file mode 100644
index 00000000000..d7332288c05
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq2x/vs_hq2x.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq3x/fs_blit.bin b/bgfx/shaders/metal/chains/hq3x/fs_blit.bin
new file mode 100644
index 00000000000..6a3da392480
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq3x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq3x/fs_hq3x.bin b/bgfx/shaders/metal/chains/hq3x/fs_hq3x.bin
new file mode 100644
index 00000000000..38ae9cf1aa5
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq3x/fs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq3x/vs_blit.bin b/bgfx/shaders/metal/chains/hq3x/vs_blit.bin
new file mode 100644
index 00000000000..122b7dee5c3
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq3x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq3x/vs_hq3x.bin b/bgfx/shaders/metal/chains/hq3x/vs_hq3x.bin
new file mode 100644
index 00000000000..d7332288c05
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq3x/vs_hq3x.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq4x/fs_blit.bin b/bgfx/shaders/metal/chains/hq4x/fs_blit.bin
new file mode 100644
index 00000000000..6a3da392480
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq4x/fs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq4x/fs_hq4x.bin b/bgfx/shaders/metal/chains/hq4x/fs_hq4x.bin
new file mode 100644
index 00000000000..5e417d94af9
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq4x/fs_hq4x.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq4x/vs_blit.bin b/bgfx/shaders/metal/chains/hq4x/vs_blit.bin
new file mode 100644
index 00000000000..122b7dee5c3
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq4x/vs_blit.bin
Binary files differ
diff --git a/bgfx/shaders/metal/chains/hq4x/vs_hq4x.bin b/bgfx/shaders/metal/chains/hq4x/vs_hq4x.bin
new file mode 100644
index 00000000000..d7332288c05
--- /dev/null
+++ b/bgfx/shaders/metal/chains/hq4x/vs_hq4x.bin
Binary files differ