Разбор демо-эффекта "Плазма"
Эффект "Плазма" заключается в цветовом отображении нескольких синусоид наложенных одна на другую.
| v = sin(x*10+time) | v = sin(10*(x*sin(time/2.0)+y*cos(time/3.0))+time); | 
cx = x + 0.5 * sin(time / 5.0) cy = y + 0.5 * cos(time / 3.0) v = sin(sqrt(100 *(cx * cx + cy * cy) + 1) + time)  | 
cx = x + 0.5 * sin(time/5.0);
cy = y + 0.5 * cos(time/3.0);
v = sin((x * 10 + time)) +
    sin(10 * (x * sin(time/2.0) + y * cos(time/3.0)) + time) +
    sin(sqrt(100 * (cx * cx + cy * cy) + 1) + time)
 | 
| Палитра №1 | Палитра №2 | 
| r = 255*(0.5+0.4 * sin(PI * v)) g = r b = r  | 
    r = 255 g = 255*(0.5 + 0.5 * cos(PI * v)) b = 255*(0.5 + 0.5 * sin(PI * v))  | 
Вот, более сложный пример плазмы:
v = sin( x * cos( time / 15.0 ) * 80.0 ) + cos( y * cos( time / 15.0 ) * 10.0 ); v += sin( y * sin( time / 10.0 ) * 40.0 ) + cos( x * sin( time / 25.0 ) * 40.0 ); v += sin( x * sin( time / 5.0 ) * 10.0 ) + sin( y * sin( time / 35.0 ) * 80.0 ); v *= sin( time / 10.0 ) * 0.5;
На палитре с зависимостью от времени:
r = 255 * v; g = 255 * v * 0.5; b = 255 * sin( toRadians(v) + time/3 ) * 0.75;
Реализация этой плазмы на GLSL:
#ifdef GL_ES
precision mediump float;
#endif
uniform float time;
uniform vec2 resolution;
void main( void ) {
	vec2 position = ( gl_FragCoord.xy / resolution.xy );
	float color = 0.0;
	color += sin( position.x * cos( time / 15.0 ) * 80.0 ) + cos( position.y * cos( time / 15.0 ) * 10.0 );
	color += sin( position.y * sin( time / 10.0 ) * 40.0 ) + cos( position.x * sin( time / 25.0 ) * 40.0 );
	color += sin( position.x * sin( time / 5.0 ) * 10.0 ) + sin( position.y * sin( time / 35.0 ) * 80.0 );
	color *= sin( time / 10.0 ) * 0.5;
	gl_FragColor = vec4( vec3( color, color * 0.5, sin( color + time / 3.0 ) * 0.75 ), 1.0 );
}