diff --git a/resources/shaders/build/120/quad.frag b/resources/shaders/build/120/quad.frag index 7c0d0c1..2e55f84 100644 --- a/resources/shaders/build/120/quad.frag +++ b/resources/shaders/build/120/quad.frag @@ -12,22 +12,28 @@ vec3 rgb2hsv(vec3 c) vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); float e = 1.0e-10; return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); } + vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } + void main(void) { const vec3 white = vec3(1.0, 1.0, 1.0); + vec4 basecolor = texture2D(tex0, f_texcoord); if (basecolor.a == 0.0) discard; + vec3 blendcolor = mix(basecolor.rgb, white, tone.rgb); + if (tone.a != 1.0) { gl_FragColor = f_color * vec4(hsv2rgb(rgb2hsv(blendcolor) * vec3(1.0, tone.a, 1.0)), basecolor.a * opacity) * color; diff --git a/resources/shaders/build/120/quad.vert b/resources/shaders/build/120/quad.vert index f7dbb5f..b3de61e 100644 --- a/resources/shaders/build/120/quad.vert +++ b/resources/shaders/build/120/quad.vert @@ -3,9 +3,11 @@ attribute vec2 vertex_pos; attribute vec2 texcoord; attribute vec4 color; + uniform mat4 mvp_matrix; varying vec2 f_texcoord; varying vec4 f_color; + void main(void) { gl_Position = mvp_matrix * vec4(vertex_pos, 0.0, 1.0); diff --git a/resources/shaders/build/330/quad.frag b/resources/shaders/build/330/quad.frag index a515eed..9df7779 100644 --- a/resources/shaders/build/330/quad.frag +++ b/resources/shaders/build/330/quad.frag @@ -7,27 +7,34 @@ uniform vec4 color; in vec4 f_color; uniform vec4 tone; out vec4 fragColor; + vec3 rgb2hsv(vec3 c) { vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); float e = 1.0e-10; return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); } + vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } + void main(void) { const vec3 white = vec3(1.0, 1.0, 1.0); + vec4 basecolor = texture(tex0, f_texcoord); if (basecolor.a == 0.0) discard; + vec3 blendcolor = mix(basecolor.rgb, white, tone.rgb); + if (tone.a != 1.0) { fragColor = f_color * vec4(hsv2rgb(rgb2hsv(blendcolor) * vec3(1.0, tone.a, 1.0)), basecolor.a * opacity) * color; diff --git a/resources/shaders/build/330/quad.vert b/resources/shaders/build/330/quad.vert index aa3be90..88dd444 100644 --- a/resources/shaders/build/330/quad.vert +++ b/resources/shaders/build/330/quad.vert @@ -3,9 +3,11 @@ layout(location = 0) in vec2 vertex_pos; layout(location = 1) in vec2 texcoord; layout(location = 2) in vec4 color; + uniform mat4 mvp_matrix; out vec2 f_texcoord; out vec4 f_color; + void main(void) { gl_Position = mvp_matrix * vec4(vertex_pos, 0.0, 1.0); diff --git a/resources/shaders/build/330/text.frag b/resources/shaders/build/330/text.frag index d7e6dfe..60b13e2 100644 --- a/resources/shaders/build/330/text.frag +++ b/resources/shaders/build/330/text.frag @@ -4,6 +4,7 @@ uniform sampler2D tex0; in vec2 f_texcoord; in vec4 f_color; out vec4 fragColor; + void main() { fragColor = vec4(1, 1, 1, texture(tex0, f_texcoord).r) * f_color;