Added flickering to the geometry shader.
This commit is contained in:
parent
bd584c3ce4
commit
b68015a6c4
@ -12,37 +12,60 @@ in vec3 Color[];
|
|||||||
out vec3 fColor;
|
out vec3 fColor;
|
||||||
|
|
||||||
const float PI = 3.1415926;
|
const float PI = 3.1415926;
|
||||||
const float transition_point = 1.178097;
|
const float transition_point_1 = 1.178097;
|
||||||
const float sin_p1 = 0.4;
|
const float sin_p1_1 = 0.4;
|
||||||
const float sin_p2 = 2;
|
const float sin_p2_1 = 2;
|
||||||
const float ex_p1 = 1.093;
|
const float ex_p1_1 = 1.093;
|
||||||
const float ex_p2 = 1.9996;
|
const float ex_p2_1 = 1.9996;
|
||||||
const float begin = 0;
|
const float begin_1 = 0;
|
||||||
const float end = 2.5;
|
const float end_1 = 2.5;
|
||||||
|
|
||||||
|
const float transition_point_2 = 1.570796;
|
||||||
|
const float sin_p1_2 = 0.2;
|
||||||
|
const float sin_p2_2 = 1.5;
|
||||||
|
const float ex_p1_2 = 0.4;
|
||||||
|
const float ex_p2_2 = 1.5;
|
||||||
|
const float begin_2 = 0;
|
||||||
|
const float end_2 = 3;
|
||||||
|
|
||||||
|
float flickerFunction() {
|
||||||
|
return sin(time);
|
||||||
|
}
|
||||||
|
|
||||||
float radiusFunction(float x) {
|
float radiusFunction(float x) {
|
||||||
if (x < transition_point) {
|
float value_1 = 0.0;
|
||||||
return sin_p1 * sin(sin_p2 * x);
|
float value_2 = 0.0;
|
||||||
|
if (x < transition_point_1) {
|
||||||
|
value_1 = sin_p1_1 * sin(sin_p2_1 * x);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return exp(ex_p1 - ex_p2 * x);
|
value_1 = exp(ex_p1_1 - ex_p2_1 * x);
|
||||||
}
|
}
|
||||||
|
if (x < transition_point_2) {
|
||||||
|
value_2 = sin_p1_2 * sin(sin_p2_2 * x);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
value_2 = exp(ex_p1_2 - ex_p2_2 * x);
|
||||||
|
}
|
||||||
|
return mix(value_1, value_2, flickerFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
fColor = Color[0];
|
fColor = Color[0];
|
||||||
|
|
||||||
float resolution = 8.0;
|
float resolution = 8.0;
|
||||||
float step = abs(end-begin)/resolution/2.0;
|
float this_begin = mix(begin_1, begin_2, flickerFunction());
|
||||||
|
float this_end = mix(end_1, end_2, flickerFunction());
|
||||||
|
float step = abs(this_end-this_begin)/resolution/2.0;
|
||||||
float i = 0.0;
|
float i = 0.0;
|
||||||
float render_end = 0.0;
|
float render_end = 0.0;
|
||||||
if (bottom) {
|
if (bottom) {
|
||||||
i = begin;
|
i = this_begin;
|
||||||
render_end = (end-begin)/2.0+step;
|
render_end = (this_end-this_begin)/2.0+step;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
i = (end-begin)/2.0;
|
i = (this_end-this_begin)/2.0;
|
||||||
render_end = end;
|
render_end = this_end;
|
||||||
}
|
}
|
||||||
for (i; i<render_end; i+=step) {
|
for (i; i<render_end; i+=step) {
|
||||||
float downRadius = radiusFunction(i);
|
float downRadius = radiusFunction(i);
|
||||||
|
Loading…
Reference in New Issue
Block a user