まーにゃ@エンタメ系火事場エンジニアの日々

数々の「火だるまプロジェクト」を安請け合いし何度でも復活する 「自称・不死身のエンジニア」の物欲まみれの日々をつづる

【PC編】「2024-09-15@なぜ?少ないVRAM消費@内蔵GPU@PCSX2」と「なぜ?60FPS?@RYZEN7600無印」と私

ここんとこ、
グランツーリスモ4@PCSX2 NIGHTLY BUILD
RYZEN 7600無印の内蔵GPUで色々実験しています。
Nvidia RTX3050は、全く動かしてません。
解像度は、2240X1568(NATIVE*3.5設定)
(内部でNATIVE(640*480)の3.5倍の解像度で
ポリゴン、シェーディング計算して、
最終的に画面サイズ約1693*947に縮小して表示します。
内部解像度を上げれば、
ざっくりいうと、画面でキレイな絵が見れるということです。)
この状態で、FPSは50から60の間でギクシャクなく動いてます。
タスクマネージャではCPU,メモリ、SSDに加え
GPUの負荷、メモリ使用量も確認できますが。。
ここで、メモリー使用量の数値に???な点が
以下のタスクマネージャ表示を見ると
GPUの負荷はほぼ100%ですが、
GPUのメモリ使用量は、1.5GB と異常に少ない。
スクリーンショット 2024-09-15 095822.jpg
画面の縦横解像度から最低限必要なVRAMの量が見積もれます。
(最低限というのは、画像を表示するために必要なバイトサイズ)
さきほど、でてきた「画面サイズ約1693*947」の数字から
電卓で、画面サイズ*RとGとB(合計3バイト)/1024とたたくと
ほんとに表示するだけに必要なVRAMサイズ「KBYTE」が求まります。
計算してみると、4925Kバイト=約5[GB」となります。
スクリーンショット 2024-09-15 111016.jpg
ここまで計算して何が言いたいのか??というと
<いったん、調べた情報をまとめると>
(1)画面に画像を出すだけでも約5GBのメモリが必要
(2)グランツーリスモ4@PCSX2実行中の
   タスクマネージャからみたGPUのVRAM使用量は
   1.5GB
<ここから推測されること>
(1)タスクマネージャのVRAM表示がバグっている可能性
(VRAMはメインメモリを共有で使ってます。)
 メインメモリと共有するVRAM設定はBIOSでMAX16GBにしてます。)
ー>表示にBUGがあるなら、あるで、ま、いいけど。。
(2)PCSX2 NIGHTLY BUILDで
   GPUの種別を認識し、GPUの機能が”弱い”場合
   グラフィックに必要な演算をCPU側で行い
   最後に完成した画像をVRAMに転送している。
 (VRAMをフレームバッファ―として
  画像転送先としてしか使っていない。)
PCSX2 NIGHTLY BUILDの画像処理関連のキーとなる
グラフィック描画設定を 貼り付けておきます。
(ここの設定をいじれば、画質は落ちるが、画像処理の負荷を減らせる)
(画質、FPSを上げたければ、画像処理に負荷がかかり、処理しきれなければFPSが落ちます。)
 FPSのレスポンス、画質が良いという要求が高ければ、
 VRAMを8GB以上積んだ、値段のそこそこするGPUを買ってください。
※画像処理は、種類によって演算量が8倍とか違ってくるので
 設定のON/OFFで 劇的に負荷を減らせる可能性が”大”です。
<設定>グラフィック>画面>
以下の感じです。ここでは、いじれそうな設定は”バイリニアフィルタリング”のON/OFF
バイリニアとニアレストの画像処理の演算量は8倍違うので”なし”にすると
より負荷は減らせる(FPSがかせげる)と推測されます。
スクリーンショット 2024-09-15 102345.jpg
<設定>グラフィック>レンダリング
ここでは、いかにも、処理が重たくなりそうな以下項目があります。
・テキスチャフィルタリング ⇒バイリニアではなく、ニアレスト(負荷8倍減)
・トライリニアフィルタリング⇒OFF(使わない)(負荷は発生しない)
・異方性フィルタリング⇒ディフォルト(OFFのまま)使う
・ディザリング⇒画面のギザギザ(ジャギーと言います)を抑える処理→OFF
スクリーンショット 2024-09-15 102408.jpg
<設定>グラフィック>テクスチャ置換>
よくわからんので、何もせず
スクリーンショット 2024-09-15 102427.jpg
<設定>グラフィック>ポストプロセス>
シャープアンチエリアシングという項目がありますが
・FXAA(NVIDAのグラボしか使えないアンチエリアシング:画面のギザギザ劣化をごまかす処理)
※参考記事
コントラスト適応型シャープニング
ー>わかりません。
スクリーンショット 2024-09-15 102451.jpg
グランツーリスモ4は、常に車が動いている状況なので、
RPGFPSなどとは違い、画面のキレイさよりも、応答性優先となります。
PCSX2 NIGHTLY BUILD  RYZEN7600無印の貧弱な内蔵GPUに対して
どんな工夫をして50以上の高いフレームレートを達成しているのか謎です。。
GPUの種別を見て、貧弱なら、CPUに処理を任せているとにらんでますが。。
DirectX12やVALKANといったグラフィックAPIを
使う場合でもまじめにAPIを使って3D処理させると
グラフィックメモリバカ食い、GPUにも高い負荷がかかります。
今回、タスクマネージャから見たVRAMの消費量が???な点。
PCSX2 NIGHTLY BUILD内部で何かゴリゴリ演算して、
グラフィックAPIには最終的に出来た画像を画面に転送するためだけに
使ってる可能性があります。
うーーん。。謎が深まるばかり。。。
こうすると、グラフィックの負荷が減らせる画像処理のお勉強の
一つのネタとして、NIGHTLY BUILDの画面、。ご参考ください。
画像処理の専門用語は、CHAR_GPTに聞けば教えてくれます。
FXAA(画面のギザギザをごまかすアンチエリアシング)については
以下の解説があります。
FXAAは、NVIDIA GEFORCEでもAMD Radeonでも使える
と記載がありました。
★おおまかに画像処理を軽くするアイデアとして
・なんとかXAAと名前の付く処理をOFFにする。
・フィルタリングで「バイリニア」と「ニアレスト」が選択できる場合は
 「ニアレスト」にすると計算量が8分の1に減らせる。
・その他、OFF設定にしてみて画面上で気にならない項目はOFFにする。
なんとかXAAの項目(2,3か所あり)をOFFにしてみたら
内部解像度(2560X1794#NATIVE*4)でも
フレームレートが60FPS越えました。
謎が深まるばかりです。。
車は画面の中を走り回ってますので、画質について気になることはありません。
では・・また・・:_;)/