Added new 'space' tile with shader / Added additional teleporter FX
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,77 @@
|
||||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
precision mediump int;
|
||||
#endif
|
||||
|
||||
#define s1 vec4(63.0, 63.0, 63.0, 255.0) / 255.0
|
||||
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
uniform vec2 u_center;
|
||||
uniform vec2 camerapos;
|
||||
uniform vec2 screensize;
|
||||
uniform float time;
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoord;
|
||||
|
||||
float round(float num, float f){
|
||||
return float(int(num / f)) * f;
|
||||
}
|
||||
|
||||
vec3 permute(vec3 x) { return mod(((x*34.0)+1.0)*x, 289.0); }
|
||||
|
||||
float snoise(vec2 v){
|
||||
const vec4 C = vec4(0.211324865405187, 0.366025403784439,
|
||||
-0.577350269189626, 0.024390243902439);
|
||||
vec2 i = floor(v + dot(v, C.yy) );
|
||||
vec2 x0 = v - i + dot(i, C.xx);
|
||||
vec2 i1;
|
||||
i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
||||
vec4 x12 = x0.xyxy + C.xxzz;
|
||||
x12.xy -= i1;
|
||||
i = mod(i, 289.0);
|
||||
vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))
|
||||
+ i.x + vec3(0.0, i1.x, 1.0 ));
|
||||
vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy),
|
||||
dot(x12.zw,x12.zw)), 0.0);
|
||||
m = m*m ;
|
||||
m = m*m ;
|
||||
vec3 x = 2.0 * fract(p * C.www) - 1.0;
|
||||
vec3 h = abs(x) - 0.5;
|
||||
vec3 ox = floor(x + 0.5);
|
||||
vec3 a0 = x - ox;
|
||||
m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );
|
||||
vec3 g;
|
||||
g.x = a0.x * x0.x + h.x * x0.y;
|
||||
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
|
||||
return 130.0 * dot(m, g);
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
vec2 c = v_texCoord.xy;
|
||||
vec4 color = texture2D(u_texture, c);
|
||||
|
||||
vec2 v = vec2(1.0/screensize.x, 1.0/screensize.y);
|
||||
ivec2 icoords = ivec2(int(c.x / v.x + camerapos.x), int(c.y / v.y + camerapos.y));
|
||||
vec2 coords = vec2(float(icoords.x), float(icoords.y));
|
||||
|
||||
float stime = time / 5.0;
|
||||
|
||||
float mscl = 30.0;
|
||||
float mth = 5.0;
|
||||
|
||||
//if there's something actually there
|
||||
if(color.a > 0.01){
|
||||
vec2 diff = camerapos + screensize/2.0 - u_center;
|
||||
|
||||
float dst = mod((distance(coords, camerapos + screensize/2.0 - diff/5.0) + time * 2.0 + snoise(coords / 100.0) * 10.0), 150.0);
|
||||
|
||||
if(dst < 40.0){
|
||||
color = vec4(vec3(0.2), 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
precision mediump int;
|
||||
#endif
|
||||
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
uniform vec2 u_center;
|
||||
uniform vec2 camerapos;
|
||||
uniform vec2 screensize;
|
||||
uniform float time;
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoord;
|
||||
|
||||
const float tau = 6.28318530717958647692;
|
||||
const float tscl = 0.5;
|
||||
|
||||
// Gamma correction
|
||||
#define GAMMA (2.2)
|
||||
|
||||
vec3 ToLinear(vec3 col ){
|
||||
// simulate a monitor, converting colour values into light values
|
||||
return pow( col, vec3(GAMMA) );
|
||||
}
|
||||
|
||||
vec3 ToGamma(vec3 col ){
|
||||
// convert back into colour values, so the correct light will come out of the monitor
|
||||
return pow( col, vec3(1.0/GAMMA) );
|
||||
}
|
||||
|
||||
float srand(vec2 co){
|
||||
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
vec4 Noise(ivec2 x ){
|
||||
vec2 uv = (vec2(x)+0.5)/256.0;
|
||||
return vec4(srand(uv), srand(uv + vec2(10.0, 0.0)), srand(uv + vec2(10.0, 0.0)), srand(uv + vec2(10.0, 10.0)));
|
||||
}
|
||||
|
||||
void main(){
|
||||
vec4 resultc = texture2D(u_texture, v_texCoord.xy);
|
||||
|
||||
if(resultc.a > 0.0){
|
||||
|
||||
vec2 coords = v_texCoord.xy*screensize;
|
||||
|
||||
vec3 ray;
|
||||
ray.xy = 2.0*(coords-screensize.xy*.5)/screensize.x;
|
||||
ray.z = 1.0;
|
||||
|
||||
float literallyzero = 0.000000000001;
|
||||
|
||||
float offset = time/60.0*.5 * tscl + camerapos.x * u_center.x * resultc.r * literallyzero;
|
||||
float speed2 = 0.3;
|
||||
float speed = speed2+.1;
|
||||
offset += .1;
|
||||
offset *= 2.0;
|
||||
|
||||
vec3 col = vec3(0.0);
|
||||
|
||||
vec3 stp = ray/max(abs(ray.x),abs(ray.y));
|
||||
|
||||
vec3 pos = 2.0*stp+.5;
|
||||
for ( int i=0; i < 20; i++){
|
||||
float z = Noise(ivec2(pos.xy)).x;
|
||||
z = fract(z-offset);
|
||||
float d = 50.0*z-pos.z;
|
||||
float w = pow(max(0.0,1.0-8.0*length(fract(pos.xy)-.5)),2.0);
|
||||
vec3 c = max(vec3(0),vec3(1.0-abs(d+speed2*.5)/speed,1.0-abs(d)/speed,1.0-abs(d-speed2*.5)/speed));
|
||||
col += 1.5*(1.0-z)*c*w;
|
||||
pos += stp;
|
||||
}
|
||||
|
||||
vec3 color = ToGamma(col);
|
||||
|
||||
if(color.r > 0.3 && color.b > 0.3){
|
||||
color = vec3(240.0, 245.0, 255.0) / 255.0;
|
||||
}else{
|
||||
color = vec3(0.0);
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(color,1.0);
|
||||
}else{
|
||||
gl_FragColor = vec4(0.0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+350
-329
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
@@ -1,7 +1,7 @@
|
||||
#Autogenerated file. Do not modify.
|
||||
#Fri Apr 06 16:57:38 EDT 2018
|
||||
#Fri Apr 06 21:25:35 EDT 2018
|
||||
version=release
|
||||
androidBuildCode=857
|
||||
androidBuildCode=864
|
||||
name=Mindustry
|
||||
code=3.4
|
||||
build=custom build
|
||||
|
||||
Reference in New Issue
Block a user