* implement new laser shaders & * recolor the excessive gauge fill to be more close to the original

This commit is contained in:
FajsiEx 2021-08-28 17:15:51 +02:00
parent 606684a9b7
commit 1ff6f92d84
16 changed files with 46 additions and 38 deletions

View File

@ -1,55 +1,55 @@
#version 330
#ifdef EMBEDDED
varying vec2 fsTex;
varying vec4 position;
#else
#extension GL_ARB_separate_shader_objects : enable
#ifdef GL_ES
precision mediump float;
layout(location=1) in vec2 fsTex;
layout(location=0) out vec4 target;
in vec4 position;
#endif
layout(location = 1) in vec2 fsTex;
layout(location = 0) out vec4 target;
uniform sampler2D mainTex;
uniform vec4 color;
uniform float objectGlow;
// 20Hz flickering. 0 = Miss, 1 = Inactive, 2 & 3 = Active alternating.
uniform int hitState;
// 0 = body, 1 = entry, 2 = exit
uniform int laserPart;
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);
}
// 20Hz flickering. 0 = Miss, 1 = Inactive, 2 & 3 = Active alternating.
uniform int hitState;
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);
}
const float laserSize = 1.0675;
void main() {
float hs = float(hitState);
float lp = step(1., float(laserPart));
float x = fsTex.x;
if (x < 0.0 || x > 1.0)
{
target = vec4(0);
return;
if (laserPart == 1) {
target = texture(mainTex, fsTex);
return;
}
float y = mix(max(1, hs) / 4, fsTex.y, lp);
vec4 mainColor = texture(mainTex, vec2(x, y));
float x = fsTex.x;
vec3 mainHsv = rgb2hsv(mainColor.xyz);
if (x < 0.0 || x > 1.0) {
target = vec4(0.0);
vec4 final = vec4(mix(hsv2rgb(vec3(mainHsv.xy + rgb2hsv(color.xyz).xy, mainHsv.z)), mainColor.xyz * color.xyz, lp), mainColor.a * color.a);
return;
}
target = final;
x -= (laserSize / 2);
x /= laserSize;
x += (laserSize / 2);
float y = 0.33 * ceil(float(hitState) / 2) + 0.02;
float visiblityMultiplier = 0.65;
if (hitState == 0) {
visiblityMultiplier = 0.4;
} else if (hitState == 2) {
visiblityMultiplier = 0.8;
} else if (hitState == 3) {
visiblityMultiplier = 1;
}
target = texture(mainTex, vec2(x, y)) * vec4(visiblityMultiplier,visiblityMultiplier,visiblityMultiplier,1);
}

View File

@ -1,4 +1,10 @@
#version 330
#ifdef EMBEDDED
attribute vec2 inPos;
attribute vec2 inTex;
varying vec2 fsTex;
varying vec4 position;
#else
#extension GL_ARB_separate_shader_objects : enable
layout(location=0) in vec2 inPos;
layout(location=1) in vec2 inTex;
@ -8,6 +14,8 @@ out gl_PerVertex
vec4 gl_Position;
};
layout(location=1) out vec2 fsTex;
out vec4 position;
#endif
uniform mat4 proj;
uniform mat4 camera;

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 933 B

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 933 B

After

Width:  |  Height:  |  Size: 7.5 KiB