* implement new laser shaders & * recolor the excessive gauge fill to be more close to the original
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
|
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 933 B |
After Width: | Height: | Size: 933 B |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 933 B After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 933 B After Width: | Height: | Size: 7.5 KiB |