最適なテクスチャサイズは?


12

私は最近、プロジェクトにテクスチャパッケージャーを追加しました。これは、次のように、一定量のテクスチャを単一のテクスチャにパックします。

パックされたテクスチャ

たとえば、これは582x1023ピクセルのサイズです。これらのパックされたテクスチャを追加する目的は明らかにパフォーマンスを向上させることだったので、OpenGL(LWJGLを使用)テクスチャの最適なテクスチャサイズを検索したかったのです。私が見つけたものは、広くサポートされている最大テクスチャサイズはによると、1024×1024であると考えられるということでした。この例のために。明らかに、多くのテクスチャだけがそれよりも大きくなるので、これは奇妙に思えます。ほとんどのグラフィックスカードは、それより大きいテクスチャをサポートしていると確信しています。ほとんどのグラフィックスカードは、たとえば4096x4096のテクスチャ(またはそれよりも大きいかもしれません)を処理できると合理的に期待できますか?

2番目の点に来るには(これがまだ1つの質問としてカウントされることを望みますが、本質的には同じ問題に要約されます):テクスチャのサイズを2の累乗にする必要があります(256x256、512x512、1024x1024、2048x2048、..)次の2の累乗よりも小さいテクスチャをパディングしますか?よると、この質問 2011年から、それは必須ではありませんが、性能や回避マイナーなバグを向上させることができ、この1 2012年からは、あなたは間違いなくパッドのテクスチャをすべきと述べています。ですから、これらの質問は以前に尋ねられたことがわかりますが、答えが変更されたと合理的に日付が付けられており、さらにそれぞれが私の質問に部分的にしか答えていません。他のプロジェクトはどのようにこれを処理しますか?

TL; DR:ほとんどのグラフィックカードで処理できるテクスチャサイズはどれくらいですか?最適なテクスチャサイズは何ですか(またはありますか)。テクスチャの幅を次の2の累乗でパディングする必要がありますか?


4
GPUは2の累乗のみを扱います。テクスチャを手動でパディングしない場合、GPU(または選択したゲームエンジン)がこれを行い、テクスチャごとの実行時のわずかな遅延が発生します。ただし、最大/最適なテクスチャサイズに関するヘルプは提供できません。
ケチュラ

@keturaああ、そうですね、ありがとう。したがって、513x10の画像を取得したとします。1024x1024にパディングしてから、これらすべての空のピクセルを転送するか、GPUにそれをさせる方が速いでしょうか?
flotothemoon

4
それほど高くする必要はありません。1024 x 16が機能します。正方形である必要はなく、各方向に2のべき乗だけです。その場合、ピクセルを節約して512x16まで下げることができないかどうか真剣に検討しますが、笑。
ケチュラ

回答:


6

YMMVですが、これに答えるのに一生懸命に取り組みます。Steam Hardware Survey(http://store.steampowered.com/hwsurvey?platform=pc)を使用して、ほとんどのコンピューターで使用可能なビデオRAM(VRAM)を決定します。2015年10月13日(現在)の結果を見ると、ほぼ85%の人が1024 MBのVRAMを持っています。

ターゲットのハードウェア(コンソール、PC、ハンドヘルド、モバイルデバイスなど)が記載されていないため、あなたの質問は非常に広範です。PCについてお話しますが、ハードウェアの仕様に基づいて他のプラットフォームを推定できます。

32ビットのカラー+ピクセルあたりアルファ、つまりピクセルあたり4バイペスを想定すると、1 GB VRAMは最大で2億5600万ピクセルを保持できます。これは256 1K x 1Kテクスチャに相当します。これは、(誤って)VRAMにテクスチャのみを保持したいが、スペースを残す必要がある他のすべてのもの(たとえば、3Dで作業している場合はメッシュデータ)があることを前提としています。また、テクスチャのミップマッピング用にさらにスペースを確保したい場合があります。これは、テクスチャが2のべき乗である場合に最適です。

最新のコンソール(XBOX OneおよびPS4)には4〜8 GBのユニファイドRAMがあり、ほとんどのハンドヘルドおよびモバイルデバイスには1〜2 GBのユニファイドRAMがあり、VRAMとして割り当てることができる量に制限があります。

通常、ほとんどのPCで機能するように2Kテクスチャを作成し、ローエンドデバイス用にオプションを縮小できるようにします。2Dゲームを作成していて、より高い解像度のディスプレイ(4K、Retina iPadなど)をターゲットにしたい場合は、背景に4Kテクスチャを使用できますが、他のほとんどの部分では使いすぎかもしれません。

これが助けになり、水が濁らないことを願っています。


答えてくれてありがとう、間違いなく役立ちます。広さについては、申し訳ありませんが、いくつかの詳細を含めるのを忘れました:私は2DのPC用に開発しています。サポートされている最大テクスチャサイズよりも大きなテクスチャを使用するとどうなりますか?それはまったく機能しないか、単に遅くなりますか?
flotothemoon

1
私の答えは正しかったようです。他のサイトフォーラムの投稿をチェックする2kテクスチャは、ほとんどのデバイスで動作するようにゲームをサポートする必要があります。テクスチャサイズの制限は、特定のハードウェアと特定のOpenGL-ESバージョンによって異なります。特定のエラーメッセージが何であるかはわかりませんが、テクスチャをロードしようとするとOpenGL-ESから表示されます。参考リンク:answers.unity3d.com/questions/563094/...forum.unity3d.com/threads/texture-sizes-and-videocards.281422feedback.wildfiregames.com/report/opengl/feature/...
ビジェイVaradan

テクスチャをロードまたはバインドしようとするとどうなりますか?それとも同じことですか?
flotothemoon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.