PS4: P4版のThe Crewは、どのようにしてPS4に移植されたか(2)
なんとかコードをコンパイルした後で、チームはPS4版のThe Crewを最適化したが、どのデータがそれぞれのメモリに最もフィットするか検討するという真剣な作業を行う必要があった。
「私たちの最初のパフォーマンスの問題は、メモリを正しく割り当てていなかったことで生じていました...オニオンバスはCPUからもアクセスでき、システム関係のデータには非常に向いています。ガーリックは、リソースをレンダリングするためには非常に良く、GPUに多くのデータを渡すことができます。
「私たちが抱えた問題の一つは、ガーリックにいくつかのシェーダを割り当てたのですが、定数(the constant)を読み込むコードは、何を書くのかを理解する上でいくつかのデータをシェーダから読む必要がありました。そしてそれはガーリックのメモリにあり、CPUキャッシュを経由しないため、読み取りに大変時間がかかったのです。これは初期に片づけなければならなかった問題の一つです。データは適切なメモリ領域に割り当てねばならないし、さもないと処理が非常に遅くなってしまいます。
このためメインシステムヒープ(ゲームの変数のメイン・ストアを含む)、主要なシェーダーデータ、CPUから読み取る必要があるレンダーターゲットのようなデータはオニオンメモリに割り当てる必要があり、頂点データ、シェーダ、テクスチャ、大半のレンダーターゲットのような、GPUにおいてより重要なデータは、超高速のガーリックメモリに保持される。
さらに重要な点は、PS4のツールチェインが、PCでの作業に精通している開発者にとって使いやすいようにデザインされていることだ。ソニーの新ハードはDirectX APIを使用していないため、ソニーは独自に2つのものを提供している。
Reflectionsのエキスパート・プログラマ・Simon O'Connor氏はこう述べている。
「グラフィックスAPIは完全な新作で、それらのAPIには過去のレガシーがないので、非常にクリーンで、充分に考え抜かれ、本当によくハードウェアと一致したものです。」
「最も低いレベルにはGNMと呼ばれるAPIがあります。これを使えばGPUをほぼ完全に制御することができます。どのようなプログラムを組むかについて、このAPIは非常に大きなポテンシャルと柔軟性をもたらしてくれます。(しかし)このレベルでGPUを動かすことは、より多くの作業を意味しています。"
ソニーはGDCでのこのローレベルのAPIについて話したが、APIの名前は開示しようとはしなかった。これで少なくとも、それが何と呼ばれるかが分かった(こういってもよければ、PS3のGCMに相当するものだ)。だが開発をさらにシンプルにするであろう、ソニーが提供するラッパーについてはどうだろうか?
「ほとんどのプログラマは、GNMラップするGNMX APIからスタートし、より難解なGPUの詳細を管理することになります。ある意味で、もしD3D11のようなプラットフォームに慣れているのであれば、それはもっとなじみのあるものです。私たちはハイレベルから始めましたが、最終的にはローレベルのAPIに移りました。私たちの使い方に少しばかり良くマッチしていたからです。
O'Connor氏は、GNMXを使うのは非常にシンプルだが、GNMXではPS4のGPUに対するカスタムでのアクセスをの多くが排除されており、また大量のCPUヒットを招くのだと説明した。
ローレベルのGNMへの移行には多くの作業が必要だった。その過程で技術チームは、メモリ割り当てとリソース管理の面でDirectXがどれほど多くの処理をバックグラウンドで行っていたかを理解した。GNMへの移行は、開発者自らがその負担をしなければならないことを意味した。O'Connor氏は説明した。
「The CrewはD3D11機能セットのサブセットを使用しています。そのサブセットのほとんどの部分は、PS4のAPIに簡単に移植することができます。しかしPS4はコンソールであってPCではありません。PCではD3Dが行っている処理はたくさんあります。それはプログラマが自身でしなければならないのです。つまりそれは、自分でやることがたくさんあるということであり、しかしながらシステムを使って何ができるのかについて、遥かに多くの制御が可能になるということでもあります。
NS: Eurogamer How The Crew was ported to PlayStation 4
「私たちの最初のパフォーマンスの問題は、メモリを正しく割り当てていなかったことで生じていました...オニオンバスはCPUからもアクセスでき、システム関係のデータには非常に向いています。ガーリックは、リソースをレンダリングするためには非常に良く、GPUに多くのデータを渡すことができます。
「私たちが抱えた問題の一つは、ガーリックにいくつかのシェーダを割り当てたのですが、定数(the constant)を読み込むコードは、何を書くのかを理解する上でいくつかのデータをシェーダから読む必要がありました。そしてそれはガーリックのメモリにあり、CPUキャッシュを経由しないため、読み取りに大変時間がかかったのです。これは初期に片づけなければならなかった問題の一つです。データは適切なメモリ領域に割り当てねばならないし、さもないと処理が非常に遅くなってしまいます。
このためメインシステムヒープ(ゲームの変数のメイン・ストアを含む)、主要なシェーダーデータ、CPUから読み取る必要があるレンダーターゲットのようなデータはオニオンメモリに割り当てる必要があり、頂点データ、シェーダ、テクスチャ、大半のレンダーターゲットのような、GPUにおいてより重要なデータは、超高速のガーリックメモリに保持される。
さらに重要な点は、PS4のツールチェインが、PCでの作業に精通している開発者にとって使いやすいようにデザインされていることだ。ソニーの新ハードはDirectX APIを使用していないため、ソニーは独自に2つのものを提供している。
Reflectionsのエキスパート・プログラマ・Simon O'Connor氏はこう述べている。
「グラフィックスAPIは完全な新作で、それらのAPIには過去のレガシーがないので、非常にクリーンで、充分に考え抜かれ、本当によくハードウェアと一致したものです。」
「最も低いレベルにはGNMと呼ばれるAPIがあります。これを使えばGPUをほぼ完全に制御することができます。どのようなプログラムを組むかについて、このAPIは非常に大きなポテンシャルと柔軟性をもたらしてくれます。(しかし)このレベルでGPUを動かすことは、より多くの作業を意味しています。"
ソニーはGDCでのこのローレベルのAPIについて話したが、APIの名前は開示しようとはしなかった。これで少なくとも、それが何と呼ばれるかが分かった(こういってもよければ、PS3のGCMに相当するものだ)。だが開発をさらにシンプルにするであろう、ソニーが提供するラッパーについてはどうだろうか?
「ほとんどのプログラマは、GNMラップするGNMX APIからスタートし、より難解なGPUの詳細を管理することになります。ある意味で、もしD3D11のようなプラットフォームに慣れているのであれば、それはもっとなじみのあるものです。私たちはハイレベルから始めましたが、最終的にはローレベルのAPIに移りました。私たちの使い方に少しばかり良くマッチしていたからです。
O'Connor氏は、GNMXを使うのは非常にシンプルだが、GNMXではPS4のGPUに対するカスタムでのアクセスをの多くが排除されており、また大量のCPUヒットを招くのだと説明した。
ローレベルのGNMへの移行には多くの作業が必要だった。その過程で技術チームは、メモリ割り当てとリソース管理の面でDirectXがどれほど多くの処理をバックグラウンドで行っていたかを理解した。GNMへの移行は、開発者自らがその負担をしなければならないことを意味した。O'Connor氏は説明した。
「The CrewはD3D11機能セットのサブセットを使用しています。そのサブセットのほとんどの部分は、PS4のAPIに簡単に移植することができます。しかしPS4はコンソールであってPCではありません。PCではD3Dが行っている処理はたくさんあります。それはプログラマが自身でしなければならないのです。つまりそれは、自分でやることがたくさんあるということであり、しかしながらシステムを使って何ができるのかについて、遥かに多くの制御が可能になるということでもあります。
NS: Eurogamer How The Crew was ported to PlayStation 4