Tôi không biết nó có liên quan nữa không, nhưng câu trả lời của Doug đã đúng
Tôi chỉ muốn thêm rằng bản thân tôi đã quản lý để tạo lại hình ảnh động chính xác như chúng được xây dựng trong trò chơi mà nó tự sử dụng cùng một tài sản, hãy xem tại đây
Magni :
precision highp float;
uniform float uTime;
uniform sampler2D uSampler0;
uniform sampler2D uSampler1;
uniform sampler2D uSampler2;
uniform sampler2D uSampler3;
uniform sampler2D uSampler4;
uniform sampler2D uSampler5;
varying vec2 texCoords;
void main(void) {
float t = uTime;
vec3 mask = texture2D(uSampler1,texCoords).rgb;
vec4 img = texture2D(uSampler0,texCoords);
img.rg*=1.1;
vec2 flow = texture2D(uSampler3,texCoords).gr;
flow.y+=t*3.;
vec4 plas = texture2D(uSampler2,flow*1.2) * mask.r;
plas *= 15.5;
plas *= vec4(0.239, 0.224,0.488,1.);
vec2 ct = texCoords;
ct.y -=t*0.5;
vec4 clouds = texture2D(uSampler4,ct*2.);
float clouds_a = clouds.a;
clouds *= 4.5;
clouds *= vec4(0.275,0.23,0.161,1.);
clouds_a *= mask.b;
img += clouds * mask.b;
img += plas * mask.r ;
img += (sin(t*15.)+1.) * mask.g * vec4(0.239, 0.224,0.488,1.)*2.;
ct.x += t * 0.5;
vec4 clouds_overall = texture2D(uSampler5,ct * 0.5);
clouds_overall *= vec4(0.275,0.23,0.161,1.);
gl_FragColor = img +clouds_overall;
}
Medivh :
precision highp float;
uniform float uTime;
uniform sampler2D uSampler0;
uniform sampler2D uSampler1;
uniform sampler2D uSampler2;
uniform sampler2D uSampler3;
uniform sampler2D uSampler4;
uniform sampler2D uSampler5;
varying vec2 texCoords;
void main(void) {
float t = uTime;
vec2 tc = texCoords;
tc.x-=t*2.;
vec4 mask = texture2D(uSampler1,texCoords);
float bump = texture2D(uSampler4,tc*0.5).r;
vec4 img = texture2D(uSampler0,vec2(texCoords.x,texCoords.y+bump* 0.055 * mask.g));
tc = texCoords;
tc.x-=0.05;
tc.y+= 0.05;
vec2 flow = texture2D(uSampler3,tc).rg;
flow.y+=t;
flow.y*=2.;
vec4 plasma = texture2D(uSampler2,flow*1.5);
plasma.rgb *= vec3(0.52,0.26,0.54);
plasma *= 3.;
flow = texture2D(uSampler5,texCoords).rg;
flow.g+=t;
vec4 plasma2 = texture2D(uSampler2,flow);
plasma2 *= 4.;
plasma2.rgb *= vec3(0.52,0.26,0.54);
gl_FragColor =img+plasma*mask.r+bump*mask.a*0.35+plasma2*mask.b;
}