mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Changed particles to a switch statement.
This commit is contained in:
parent
cd5096fe73
commit
7acd953923
@ -169,7 +169,8 @@ void main() {
|
||||
Attr attr;
|
||||
f_reflect = 1.0;
|
||||
|
||||
if (inst_mode == SMOKE) {
|
||||
switch(inst_mode) {
|
||||
case SMOKE:
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
vec3(0),
|
||||
@ -179,7 +180,8 @@ void main() {
|
||||
vec4(vec3(0.8, 0.8, 1) * 0.5, start_end(1.0, 0.0)),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 0.5)
|
||||
);
|
||||
} else if (inst_mode == FIRE) {
|
||||
break;
|
||||
case FIRE:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -190,7 +192,8 @@ void main() {
|
||||
vec4(2, 1.5 + rand5 * 0.5, 0, start_end(1.0, 0.0)),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
|
||||
);
|
||||
} else if (inst_mode == FIRE_BOWL) {
|
||||
break;
|
||||
case FIRE_BOWL:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -201,7 +204,8 @@ void main() {
|
||||
vec4(2, 1.5 + rand5 * 0.5, 0, start_end(1.0, 0.0)), // Colour
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
|
||||
);
|
||||
} else if (inst_mode == GUN_POWDER_SPARK) {
|
||||
break;
|
||||
case GUN_POWDER_SPARK:
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
normalize(vec3(rand0, rand1, rand3)) * 0.3,
|
||||
@ -211,7 +215,8 @@ void main() {
|
||||
vec4(3.5, 3 + rand7, 0, 1),
|
||||
spin_in_axis(vec3(1,0,0),0)
|
||||
);
|
||||
} else if (inst_mode == SHRAPNEL) {
|
||||
break;
|
||||
case SHRAPNEL:
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
vec3(0),
|
||||
@ -221,7 +226,8 @@ void main() {
|
||||
vec4(vec3(0.25), 1),
|
||||
spin_in_axis(vec3(1,0,0),0)
|
||||
);
|
||||
} else if (inst_mode == BIG_SHRAPNEL) {
|
||||
break;
|
||||
case BIG_SHRAPNEL:
|
||||
float brown_color = 0.05 + 0.1 * rand1;
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -232,7 +238,8 @@ void main() {
|
||||
vec4(vec3(brown_color, brown_color / 2, 0), 1),
|
||||
spin_in_axis(vec3(1,0,0),0)
|
||||
);
|
||||
} else if (inst_mode == FIREWORK_BLUE) {
|
||||
break;
|
||||
case FIREWORK_BLUE:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -243,7 +250,8 @@ void main() {
|
||||
vec4(vec3(0, 0, 2), 1),
|
||||
identity()
|
||||
);
|
||||
} else if (inst_mode == FIREWORK_GREEN) {
|
||||
break;
|
||||
case FIREWORK_GREEN:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -254,7 +262,8 @@ void main() {
|
||||
vec4(vec3(0, 2, 0), 1),
|
||||
identity()
|
||||
);
|
||||
} else if (inst_mode == FIREWORK_PURPLE) {
|
||||
break;
|
||||
case FIREWORK_PURPLE:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -265,7 +274,8 @@ void main() {
|
||||
vec4(vec3(2, 0, 2), 1),
|
||||
identity()
|
||||
);
|
||||
} else if (inst_mode == FIREWORK_RED) {
|
||||
break;
|
||||
case FIREWORK_RED:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -276,7 +286,8 @@ void main() {
|
||||
vec4(vec3(2, 0, 0), 1),
|
||||
identity()
|
||||
);
|
||||
} else if (inst_mode == FIREWORK_WHITE) {
|
||||
break;
|
||||
case FIREWORK_WHITE:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -287,7 +298,8 @@ void main() {
|
||||
vec4(vec3(2, 2, 2), 1),
|
||||
identity()
|
||||
);
|
||||
} else if (inst_mode == FIREWORK_YELLOW) {
|
||||
break;
|
||||
case FIREWORK_YELLOW:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
@ -298,7 +310,8 @@ void main() {
|
||||
vec4(vec3(2, 2, 0), 1),
|
||||
identity()
|
||||
);
|
||||
} else if (inst_mode == LEAF) {
|
||||
break;
|
||||
case LEAF:
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
vec3(0),
|
||||
@ -308,7 +321,8 @@ void main() {
|
||||
vec4(vec3(0.2 + rand7 * 0.2, 0.2 + (0.25 + rand6 * 0.5) * 0.3, 0) * (0.75 + rand1 * 0.5), 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 5)
|
||||
);
|
||||
} else if (inst_mode == SNOW) {
|
||||
break;
|
||||
case SNOW:
|
||||
float height = mix(-4, 60, pow(start_end(1, 0), 3));
|
||||
float wind_speed = (inst_pos.z - 2000) * 0.025;
|
||||
vec3 offset = linear_motion(vec3(0), vec3(1, 1, 0) * wind_speed);
|
||||
@ -319,7 +333,8 @@ void main() {
|
||||
vec4(1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 5)
|
||||
);
|
||||
} else if (inst_mode == FIREFLY) {
|
||||
break;
|
||||
case FIREFLY:
|
||||
float raise = pow(sin(3.1416 * lifetime / inst_lifespan), 0.2);
|
||||
attr = Attr(
|
||||
vec3(0, 0, raise * 5.0) + vec3(
|
||||
@ -331,7 +346,8 @@ void main() {
|
||||
vec4(vec3(5, 5, 1.1), 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 5)
|
||||
);
|
||||
} else if (inst_mode == BEE) {
|
||||
break;
|
||||
case BEE:
|
||||
float lower = pow(sin(3.1416 * lifetime / inst_lifespan), 0.2);
|
||||
attr = Attr(
|
||||
vec3(0, 0, lower * -0.5) + vec3(
|
||||
@ -343,14 +359,16 @@ void main() {
|
||||
vec4(vec3(1, 0.7, 0), 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 5)
|
||||
);
|
||||
} else if (inst_mode == GROUND_SHOCKWAVE) {
|
||||
break;
|
||||
case GROUND_SHOCKWAVE:
|
||||
attr = Attr(
|
||||
vec3(0.0),
|
||||
vec3(11.0, 11.0, (33.0 * rand0 * sin(2.0 * lifetime * 3.14 * 2.0))) / 3,
|
||||
vec4(vec3(0.32 + (rand0 * 0.04), 0.22 + (rand1 * 0.03), 0.05 + (rand2 * 0.01)), 1),
|
||||
spin_in_axis(vec3(1,0,0),0)
|
||||
);
|
||||
} else if (inst_mode == HEALING_BEAM) {
|
||||
break;
|
||||
case HEALING_BEAM:
|
||||
f_reflect = 0.0;
|
||||
attr = Attr(
|
||||
spiral_motion(inst_dir, 0.3 * (floor(2 * rand0 + 0.5) - 0.5) * min(linear_scale(10), 1), lifetime / inst_lifespan, 10.0, inst_time),
|
||||
@ -358,7 +376,8 @@ void main() {
|
||||
vec4(vec3(0.4, 1.6 + 0.3 * sin(tick.x * 10 - lifetime * 3 + 4), 1.0 + 0.15 * sin(tick.x * 5 - lifetime * 5)), 1 /*0.3*/),
|
||||
spin_in_axis(inst_dir, tick.z)
|
||||
);
|
||||
} else if (inst_mode == LIFESTEAL_BEAM) {
|
||||
break;
|
||||
case LIFESTEAL_BEAM:
|
||||
f_reflect = 0.0;
|
||||
float green_col = 0.2 + 1.4 * sin(tick.x * 5 + lifetime * 5);
|
||||
float purple_col = 1.2 + 0.1 * sin(tick.x * 3 - lifetime * 3) - max(green_col, 1) + 1;
|
||||
@ -368,7 +387,8 @@ void main() {
|
||||
vec4(vec3(purple_col, green_col, 0.75 * purple_col), 1),
|
||||
spin_in_axis(inst_dir, tick.z)
|
||||
);
|
||||
} else if (inst_mode == ENERGY_NATURE) {
|
||||
break;
|
||||
case ENERGY_NATURE:
|
||||
f_reflect = 0.0;
|
||||
float spiral_radius = start_end(1 - pow(abs(rand5), 5), 1) * length(inst_dir);
|
||||
attr = Attr(
|
||||
@ -377,7 +397,8 @@ void main() {
|
||||
vec4(vec3(0, 1.7, 1.3), 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
|
||||
);
|
||||
} else if (inst_mode == FLAMETHROWER) {
|
||||
break;
|
||||
case FLAMETHROWER:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
(inst_dir * slow_end(1.5)) + vec3(rand0, rand1, rand2) * (percent() + 2) * 0.1,
|
||||
@ -385,7 +406,8 @@ void main() {
|
||||
vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9)
|
||||
);
|
||||
} else if (inst_mode == EXPLOSION) {
|
||||
break;
|
||||
case EXPLOSION:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity),
|
||||
@ -393,7 +415,8 @@ void main() {
|
||||
vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9)
|
||||
);
|
||||
} else if (inst_mode == ICE) {
|
||||
break;
|
||||
case ICE:
|
||||
f_reflect = 0.0; // Ice doesn't reflect to look like magic
|
||||
attr = Attr(
|
||||
inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity),
|
||||
@ -401,7 +424,8 @@ void main() {
|
||||
vec4(0.2, 1.6 + rand5 * 0.3 - 0.4 * percent(), 3, 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9)
|
||||
);
|
||||
} else if (inst_mode == FIRE_SHOCKWAVE) {
|
||||
break;
|
||||
case FIRE_SHOCKWAVE:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
attr = Attr(
|
||||
vec3(rand0, rand1, lifetime * 10 + rand2),
|
||||
@ -409,7 +433,8 @@ void main() {
|
||||
vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1),
|
||||
spin_in_axis(vec3(rand3, rand4, rand5), rand6)
|
||||
);
|
||||
} else if (inst_mode == CULTIST_FLAME) {
|
||||
break;
|
||||
case CULTIST_FLAME:
|
||||
f_reflect = 0.0; // Fire doesn't reflect light, it emits it
|
||||
float purp_color = 0.9 + 0.3 * rand3;
|
||||
attr = Attr(
|
||||
@ -418,14 +443,16 @@ void main() {
|
||||
vec4(purp_color, 0.0, purp_color, 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9)
|
||||
);
|
||||
} else if (inst_mode == STATIC_SMOKE) {
|
||||
break;
|
||||
case STATIC_SMOKE:
|
||||
attr = Attr(
|
||||
vec3(0),
|
||||
vec3((0.5 * (1 - slow_start(0.8)))),
|
||||
vec4(1.0),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9)
|
||||
);
|
||||
} else if (inst_mode == BLOOD) {
|
||||
break;
|
||||
case BLOOD:
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
vec3(0),
|
||||
@ -435,7 +462,8 @@ void main() {
|
||||
vec4(1, 0, 0, 1),
|
||||
spin_in_axis(vec3(1,0,0),0)
|
||||
);
|
||||
} else if (inst_mode == ENRAGED) {
|
||||
break;
|
||||
case ENRAGED:
|
||||
f_reflect = 0.0;
|
||||
float red_color = 1.2 + 0.3 * rand3;
|
||||
attr = Attr(
|
||||
@ -444,10 +472,11 @@ void main() {
|
||||
vec4(red_color, 0.0, 0.0, 1),
|
||||
spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9)
|
||||
);
|
||||
} else if (inst_mode == LASER) {
|
||||
break;
|
||||
case LASER:
|
||||
f_reflect = 0.0;
|
||||
vec3 perp_axis = normalize(cross(inst_dir, vec3(0.0, 0.0, 1.0)));
|
||||
vec3 offset = vec3(0.0);
|
||||
offset = vec3(0.0);
|
||||
if (rand0 > 0.0) {
|
||||
offset = perp_axis * 0.5;
|
||||
} else {
|
||||
@ -459,7 +488,8 @@ void main() {
|
||||
vec4(vec3(2.0, 0.0, 0.0), 1),
|
||||
spin_in_axis(perp_axis, asin(inst_dir.z / length(inst_dir)) + PI / 2.0)
|
||||
);
|
||||
} else {
|
||||
break;
|
||||
default:
|
||||
attr = Attr(
|
||||
linear_motion(
|
||||
vec3(rand0 * 0.25, rand1 * 0.25, 1.7 + rand5),
|
||||
@ -469,6 +499,7 @@ void main() {
|
||||
vec4(1),
|
||||
spin_in_axis(vec3(1,0,0),0)
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
// Temporary: use shrinking particles as a substitute for fading ones
|
||||
|
Loading…
Reference in New Issue
Block a user