LiquidVRの説明では、Async Shaders for VRとなっていたが、シェーダを非同期化することで、GPUをより効率的に使うというのが「Async Shaders」だ。
現在のゲームをはじめとするプログラムは、複数のタスクが並列に動いているもののGPU側は1つのコマンドストリームしか動作しない。そこで、現在は複数のタスクをスケジューリング化して順次動作するようになっている。しかし、この場合は1つのタスクが終了するまでほかのタスクを動かせない。ここで、信号で管制している一般道をイメージしてほしい。
優先タスクを用意してそのタスクが来た場合のみ割り込ませるのが「Pre-Emption」だ。この場合、優先タスクが来るとそれを最優先する。一般道で緊急車両が来るとほかの車が道をあけるのに似ている。この場合、優先タスクをスムーズに実行する一方で、データの退避が必要となるのでオーバーヘッドが増える。
Async Shadersはここまでの「信号で管制する一般道」ではなく、高速道路の入口のように信号がなく、本線が空いていればいつでも進入できる。これを可能としているのがGCN 1.1以降に備えた「Asynchronous Compute Engines」(ACEs)だ。これはGPUの演算ユニット(CU)に対して、汎用の演算命令を発行する。ACEsを使うことでより細かな粒度の処理を扱うことができる。
なお、Async Shadersの発想は新しいものではなく、すでに一部のプレステーション 4対応ゲームやMantle対応のPCゲームで利用していたという。Async Shadersが一部ベンダーに限った独自の実装ではなく、標準的なDirectX 12、Vulkan(新世代のOpenGL API)で利用できるのが目新しい。
DirectX 12もVulkanもDirectX 11、OpenGL 4.xとは大幅に異なるAPIなので、しばらくは共存するようだが、それでも、最新のAPIをフルに使いこなすゲームタイトルの登場とともに、最新GPU、または、APUでバリバリと描画してみたいという欲求は、ハイエンドゲーマーを中心に高まっていきそうな気配だ。
Copyright © ITmedia, Inc. All Rights Reserved.