私はこれまでにこのようなことをしたことはありませんが、いくつかの複雑なセル オートマトンを実行しました。これが曖昧すぎる場合は申し訳ありません。
ここでの基本的な考え方は、「落下し続ける」または「動かない」必要があるすべてのパーティクルをマークし、それらを複雑な処理から除外することです (「落下」リスト用の特別な短い/高速プロセッサを使用 - 必要なのは、それぞれをドロップすることだけです)。ピクセル単位)。
- 動かない粒子 - 静的粒子 (私はそれらを S 粒子と呼びます) の加速度は、それらが動かないということです。すべての非移動領域 (ユーザーが作成する可能性のある重力に影響されない「壁」または「ボウル」など) に対してマークします。その上の粒子が安定している場合は S とマークします。たとえば、液体の場合、下に S 粒子がある場合は、砂のように山を形成するものでは、その下の 3 つのスポットのそれぞれに S がある場合、山ができます。 、それを変更して、いくつかのものをより急な山にしたり、急でない山にしたりすることができると確信しています.Sマッピングをボトムアップで行います.
- その下に粒子がない粒子の加速度は落下です - F 粒子。その下に F 粒子がある粒子も F 粒子です。これらのボトムアップもマークします。
- F または S のマークが付いていない粒子は複雑で、落下を開始したり、落下を停止したり、転がったりする可能性があります。それらを処理するために、既に持っている低速のプロセッサを使用します。多くはないはずです。
最終的には、多くの高速粒子が得られます。山/湖にいるものと雨が降っているもの。残りの粒子は、斜面の端、湖の頂上、またはその他の複雑な位置にある粒子です。速い粒子があるほど多くないはずです。
粒子の種類ごとに色を付けて視覚的にマークします。複雑な粒子は明るい赤です。それでも遅い場合を見つけて、他にどのような高速プロセッサを作成する必要があるかを確認してください。たとえば、大量の砂の山を作ると、斜面に沿って赤い領域がたくさん作成されることに気付くかもしれません。山の斜面に沿った「ローリング ゾーン」のスピードアップに投資したいと思うかもしれません。
それが理にかなっていることを願っています。何かを見つけたら、戻って編集することを忘れないでください。