Anti-Lagが短縮する“ラグ”はいかなるラグか?
ではAnti-Lagはいったいどんな“ラグ”を短縮してくれるのか簡単に解説しておこう。PCゲームの処理は、まずCPUがプレイヤーの操作を受け付けたり、攻撃の当たり判定といったゲームのロジックに関係する処理を行ない、その結果どういった画面を出すかで決定する。次にGPUがCPUが算出した情報に基づいて実際に画面をレンダリングする。
つまりCPUが処理を始め、GPUが描画を終えて画面に表示されるまでが1サイクルとなる。今回は話を簡単にするために、GPUのレンダリング終了とともに映像が表示されるとしよう。つまりV-Sync無効、あるいはFreeSyncなどのVRR技術を有効にしている状況だ。
上図で赤色矢印のタイミングでプレイヤーの操作を受け付け、黄色矢印のタイミングで画面が表示されるとしよう。プレイヤーはAという映像が表示されると、それにリアクションするために操作Aを入力するが、図から分かる通りAとは、Aが表示されるずっと前に処理されたCPUフレームでの状況を反映したものであり、画像Aを見て入力した操作Aが実際に画面に反映されるのは映像Bである。
プレイヤーの反射神経という要素を除外して考えたとしても、常に画面から得られる視覚的入力に呼応するレンダリング結果を得るためには、一定の時間が必要になる。この時間をAMDは「インプットラグ」と呼び、Anti-Lagを利用することでより短くできると提唱しているのである。
Anti-Lagが一体何を行なっているかについては、具体的な資料は提供されていない。だがAnti-Lagの動作原理とは、単純にCPUの処理するタイミングを調整するものらしい、ということは分かっている。
要するに入力を処理するタイミングをドライバー側でギリギリまで遅らせることができれば、プレイヤーの目からは入力に鋭敏に反応するように見える。敵のアクションを見てから反応するタイプのゲームにおいて、インプットラグの短縮は非常に重要なのだ。
実際Anti-Lagをオンにするとゲーム中のCPU占有率はわずかに増える。CPUの処理タイミングを後ろにずらすということは、それだけCPUの処理時間が長くなる。占有率が増えるのは当然の帰結となる。
CPUの処理タイミングを調整してインプットラグを減らすというAnti-Lagの仕組みは、それがそっくりそのままAnti-Lagの利用制限につながる。Anti-LagがDirectX 12非対応なのはDirectX 12のゲームではドライバー側の工夫でCPUの処理に介入することができない(ゲームプログラム側が一連のグラフィック処理を制御する)ためである。
さらに言えば、Anti-Lagが効くのはゲームの処理において「GPU Bound」なシチュエーションに限られる、ということだ。GPU Boundなシチュエーションとは、グラフィック描画においてGPUの性能が律速になっているという状況。逆にCPUのパワーが足りない「CPU Bound」な状況では、CPUの処理タイミングを調整するAnti-Lagは意味をなさないというわけだ。