差分

ナビゲーションに移動 検索に移動

フェンス

49 バイト追加, 2024年3月10日 (日)
編集の要約なし
たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。
フェンスがない時代はアイドル状態(タスク全停止)になるのを待っていました。フェンスがない時代はGPU自体がアイドル状態(タスク全停止)になるのを待っていました。 gpu.addTask(task1);<source lang="csharp"> gpu gpu.addTask(task2renderTask); gpu gpu.addTask(computeTask);
gpu.waitForIdle();
</source>
フェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」と言ったことができます。一方でフェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。<source lang="csharp">
var fence = gpu.createFence();
gpu.addTask(task1, fence); gpu.addTask(task2renderTask, fence);
gpu.addTask(computeTask, null);
gpu.waitForFence(fence); // task1とtask2の両方が終わるのを待つrenderTaskが終わるのを待つ</source> [[category: GPU]]

案内メニュー