フレームレートについて
Verethragnaのフレームレート(FPS)について少しお話を。
フレームレートとは1秒間に何回画面を更新できるかを示してましてFPSとも言われています。
ひと昔前はインターレースとかプログレッシブとかありましたけど現在はプログレッシブが普通ですかね。昔はフレームレートが出なくてインターレース形式ってのもやりましたよねー、うちも。最近ですと似たようなので垂直同期ってのがモニターのリフレッシュレートと同期させてティアリングを防ぐみたいなこともありますね、Verethragnaは垂直同期は常時オフなんですけど。
さて、Verethragnaのウェブサイトには最大フレームレートは「960fps」と記載しています。スクショにもありますけどこの数値は間違いではないのですが、960fpsを実現するにはいつくか条件がございます。
まずは、キャプチャーです。Verethragnaでは、サーバー側のキャプチャーにDirectXを利用していますが、フレームレートを上げ続けるといずれキャプチャーできなかったとしてAPIがタイムアウトを返してきます。ちなみにVerethragnaはタイムアウトだった場合は1つ前の画面の画像を次のエンコード処理に渡してます。つまりは前回と同じ画像ですね。ですので上記の通り適した環境でキャプチャーができていないとうわべだけFPSが上がってしまいます。どこまでタイムアウトさせないかといったところが環境づくりの大事な点ですかね。
次に、エンコードです。Verethragnaは、映像圧縮コーデックにVP8をベースに高速化させてYUV444にも対応させたカスタムチューンモデル(VP8 Custom)を実装しておりますが、演算自体はCPUで行うため十分な性能のCPUが必要です。スクショをご覧の通り当方のショボイ環境では解像度は400x300でないと900fpsを超えることができません。トホホ。
次に、通信速度ですが、こちらは特に問題ないと思うくらいの通信インフラが整ってきておりますので恐らく大丈夫でしょう。1920x1080であれば1Gbpsも出れば十分ですたぶん。
次に、デコードですが、こちらも当社のVP8 Custumが頑張ってくれると思いますのでいけると思います。元々デコードはそんな遅くない印象ですのでたぶん。
次に、描画です。クライアント側の描画性能は意外と重要で解像度が低いとか拡大縮小が絡むと途端にパフォーマンスが悪くなります。描画自体はGDIで行っているので基本的にはマイクロソフトさんがんばれになるのですがCPUとかGPUとかの環境を少しでも整えておくのは良いことかと思います。ちなみに当方の環境では上記の通りで400x300が精一杯です。
最後に、モニターです。今ですと恐らく320Hzのモニターが最速なんじゃないかと思いますが、仮想モニターだとその壁を越えれるような気もしますが、リフレッシュレートが960Hz以上ないとOS上で描画していてもモニターに映し出すことができません。将来的には登場してくるんでしょうけど。
てことで、いずれは新しいパソコンなどを整えて1920x1080で960fpsを実現したいところではありますね。
ちなみに、ここまで上限を最大960fpsと書いてきましたけど、Verethragnaでは特にFPSの上限を定めておりません。クライアントモードのメニューでFPSをMaximumに選択すればFPSは無制限になります。上の通り、現在ではピュアに960fpsを出せる環境はないと思いますが、いずれ時代が追いついてくると思いますので、その時はVerethragnaのFPSの上限を上げようかと思っております。ですので、まだ時代が追いつけないであろう数値に設定しております。古くからのユーザーの方はBrynhildrの記事でネタで5000fpsオーバーとかやっていたのでご存じの方はご存じだと思いますけど。
そんな感じでフレームレートの小話でございましたー。