doxas / twigl

twigl.app is an online editor for One tweet shader, with gif generator and sound shader, and broadcast live coding.
https://twigl.app/
MIT License
815 stars 51 forks source link

fix #6 caused by redundant draw() calls #7

Closed phi16 closed 4 years ago

phi16 commented 4 years ago

reset が呼ばれた時に新たに this.draw() を行っていますが https://github.com/doxas/twigl/blob/39011756d572591165f95504914dcd7109206e29/src/fragmen.js#L408 それに拘らずもともと draw() が自身を requestAnimationFrame で呼ぶループを完結しているので https://github.com/doxas/twigl/blob/39011756d572591165f95504914dcd7109206e29/src/fragmen.js#L416

もともと生きていた draw が回りつつ、新たに this.draw() によってループを増やしているようです (つまり今まで reset した回数だけ同時に draw している)

恐らく draw() が基本的に1本走っている状況で良いかと思ったので複数走らないようにガードをつけました (プロファイラを見る限りは意図通り動作しています)

doxas commented 4 years ago

ありがとうございます! 確かに draw 自身は常にサイクルを回し続けているのだから、それを再度呼び出すのはおかしいですね…… なぜ気が付かなかったのか…… Pull Request ありがとうございます。 おそらくこれが原因だろうとは思うのですが、一度ローカルで確認だけさせていただいて、問題なければ merge します!