mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-13 20:14:05 +09:00
hq2x shader using modernised syntax
This commit is contained in:
@@ -47,7 +47,7 @@ class Hq2x : Disposable {
|
|||||||
program = compileShader(
|
program = compileShader(
|
||||||
Gdx.files.classpath("shaders/hq2x.vert"),
|
Gdx.files.classpath("shaders/hq2x.vert"),
|
||||||
Gdx.files.classpath("shaders/hq2x.frag"),
|
Gdx.files.classpath("shaders/hq2x.frag"),
|
||||||
"#define SCALE ${scaleFactor}.0")
|
"")
|
||||||
|
|
||||||
lutTexture = Texture(Gdx.files.classpath("shaders/hq${scaleFactor}x.png"))
|
lutTexture = Texture(Gdx.files.classpath("shaders/hq${scaleFactor}x.png"))
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
#version 150
|
||||||
// This float value should be defined from the compiling code.
|
// This float value should be defined from the compiling code.
|
||||||
// #define SCALE [2, 3, 4].0
|
// #define SCALE [2, 3, 4].0
|
||||||
|
|
||||||
|
#define SCALE 2.0
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
#define PRECISION mediump
|
#define PRECISION mediump
|
||||||
precision PRECISION float;
|
precision PRECISION float;
|
||||||
@@ -13,12 +15,14 @@ uniform sampler2D u_texture;
|
|||||||
uniform sampler2D u_lut;
|
uniform sampler2D u_lut;
|
||||||
uniform vec2 u_textureSize;
|
uniform vec2 u_textureSize;
|
||||||
|
|
||||||
varying vec4 v_texCoord[4];
|
in vec4 v_texCoord[4];
|
||||||
|
|
||||||
const mat3 YUV_MATRIX = mat3(0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081);
|
const mat3 YUV_MATRIX = mat3(0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081);
|
||||||
const vec3 YUV_THRESHOLD = vec3(48.0/255.0, 7.0/255.0, 6.0/255.0);
|
const vec3 YUV_THRESHOLD = vec3(48.0/255.0, 7.0/255.0, 6.0/255.0);
|
||||||
const vec3 YUV_OFFSET = vec3(0, 0.5, 0.5);
|
const vec3 YUV_OFFSET = vec3(0, 0.5, 0.5);
|
||||||
|
|
||||||
|
out vec4 fragColor;
|
||||||
|
|
||||||
bool diff(vec3 yuv1, vec3 yuv2) {
|
bool diff(vec3 yuv1, vec3 yuv2) {
|
||||||
return any(greaterThan(abs((yuv1 + YUV_OFFSET) - (yuv2 + YUV_OFFSET)), YUV_THRESHOLD));
|
return any(greaterThan(abs((yuv1 + YUV_OFFSET) - (yuv2 + YUV_OFFSET)), YUV_THRESHOLD));
|
||||||
}
|
}
|
||||||
@@ -79,5 +83,5 @@ void main() {
|
|||||||
float sum = dot(weights, vec4(1));
|
float sum = dot(weights, vec4(1));
|
||||||
vec3 res = (pixels * (weights / sum)).rgb;
|
vec3 res = (pixels * (weights / sum)).rgb;
|
||||||
|
|
||||||
gl_FragColor.rgb = res;
|
fragColor.rgb = res;
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,11 @@
|
|||||||
#ifdef GL_ES
|
#version 150
|
||||||
#define PRECISION mediump
|
|
||||||
precision PRECISION float;
|
|
||||||
precision PRECISION int;
|
|
||||||
#else
|
|
||||||
#define PRECISION
|
|
||||||
#endif
|
|
||||||
|
|
||||||
attribute vec4 a_position;
|
in vec4 a_position;
|
||||||
attribute vec2 a_texCoord0;
|
in vec2 a_texCoord0;
|
||||||
|
|
||||||
uniform vec2 u_textureSize;
|
uniform vec2 u_textureSize;
|
||||||
|
|
||||||
varying vec4 v_texCoord[4];
|
out vec4 v_texCoord[4];
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
|
|||||||
Reference in New Issue
Block a user