Kare doku tekstürünü, dokuyu zamanın ortasına taşımaya çalışıyorum. Aşağıdaki kod, geometrinin merkezine (düzlem) ulaştığında çekilen pikselin kaybolmasını istemediğimde ve zamana göre yalnızca daha küçük bir hal alırken ve zamanın daralması gibi göründüğü sürece bu işi yapıyor.Tekstili merkeze taşımak için gölgelendiriciyi kullanma
uniform float time;
varying vec2 vUv;
void main() {
vec2 center = vec2(0.5, 0.5);
vec2 newPosition = vec2(vUv.x + t * (center.x - vUv.x), vUv.y + t * (center.y - vUv.y);
gl_FragColor = texture2D(texture, vec2(newPosition.x, newPosition.y));
}
Düzenleme: doku merkezindeki kara delik olarak bu
düşünün.
t 0,0 ile 1,0 arasında mı? – Robinson
t işleme döngüsünde her zaman artar: (yani, t + = 0,01) – socrateisabot
Ardından, "vUv.x" ve "t * (center.x - vUv.x)" arasındaki eşitsizlik büyümeye devam edecektir. 'T = 0.0' 'da' (vUv.x, vUv.y) 've' t = 1.0' 'dır (' center.x, center.y) '. Burada sahip olduğunuz şey 't * merkez - (1.0 - t) * vUv' - merkezin solundaki pikseller için' 1.0' sonra bu değer pozitiftir ve merkezin sağında negatiftir. dokunuzu hareket ettirmekten ziyade, onu ölçeklendirirsiniz (ve aslında, çevirir). Bunun yerine vec2 (vUv.x + t * center.x, vUv.y + t * center.y) 'yi kullanmayı denediniz mi? –