UDN
Search public documentation:

TextureSupportAndSettingsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3ホーム > マテリアル&テクスチャ > テクスチャサポートおよび設定
UE3ホーム > テクスチャアーティスト > テクスチャサポートおよび設定

テクスチャサポートおよび設定


概要


このページは、エンジンとハードウェア内でのテクスチャサポートの詳細について説明します。

テクスチャ解像度


Unreal Engine 3は、1x1 から4096x4096までのテクスチャ解像度をサポートしています。
最新のDirectXビデオアダプターおよびゲームコンソールは、1x1 から2048x2048 、最大8192x8192までのさまざまなテクスチャ解像度をサポートしています。特定のハードウェアデバイスがサポートする最大テクスチャ解像度は、メーカーおよびモデルによって異なります。また、利用可能なテクスチャメモリプールのサイズもハードウェアによって異なります。
ワールドジオメトリやユーザーインターフェースなど、さまざまなエリアでレンダリングされるテクスチャ解像度の維持のため、Unreal Engine 3 には多数の機能や設定が搭載されています。

エンジンテクスチャ解像度の限界


Unreal Engine 3 では、テクスチャミップマップの最大数をデフォルトで 13に設定していますが、これはレンダリングされたテクスチャ数の限界を効果的に4096 (1x1 から 4096x4096 は 13ミップマップです)に制限します。 ただ、インポートされた8192のテクスチャは、4096のテクスチャサイズのmip1 しかレンダリングしないという副作用をもたらします。定数MAX_TEXTURE_MIP_COUNTは、エンジンソースファイルでデフォルト設定が13になっているので、8192テクスチャレンダリングのサポートを可能にするため、この値を14に変更することもできます。この定数は以下のソースファイル (2009年QA3月現在。他のQAバージョンに対しては確認すること)で定義されています。

Src\D3D10Drv\Src\D3D10Device.cpp
Src\D3D9Drv\Src\D3D9Device.cpp
Src\Engine\Inc\RHI.h
Src\Engine\Inc\UnTex.h
Src\Engine\Src\RHI.cpp
Src\Engine\Src\TextureCube.cpp

圧縮テクスチャメモリ要件


DXTは、パレットカラーおよび補間カラーの4x4ピクセルブロックに基づいた不可逆圧縮です。これは、圧縮率8:1 DXT1および圧縮率4:1 DXT5の一定な圧縮ファイルサイズにします。ビデオメモリおよびテクスチャプールリソースは特定のプラットフォームやハードウェアでは固定されているため、テクスチャ解像度とリソースの使用法の間でバランスを取らなくてはいけません。 次の表は、フルのミップマップ(1x1 最高フルのネイティブmip0まで)でのさまざまな共通解像度でのDXT1およびDXT5テクスチャのメモリ要件です。 メモリ要件はテクスチャ解像度率の定数倍数に近く、DXT5テクスチャはDXT1の2倍近くのメモリを要求しますので注意してください。
解像度から圧縮率までが一定なことから、ここにリストされていないテクスチャ解像度のメモリ要件を算出するには、解像度率を乗算するだけです。例えば、1024x512テクスチャは1024x1024の2分の1のメモリ要求となります。
この表データは、Box-Filterミップマップ生成およびDirectX Texture Compressionを使用したATIのCompressonatorで作成されたテクスチャからコンパイルされました。

解像度 1x1からの総ミップマップ数 DXT1 DXT5
16x16 5 ミップマップ 312 バイト 496 バイト
32x32 6 ミップマップ 824 バイト 1.48kb (1,520 バイト)
64x64 7 ミップマップ 2.80kb (2,872 バイト) 5.48kb (5,616 バイト)
128x128 8 ミップマップ 10.8kb (11,064 バイト) 21.4kb (22,000 バイト)
256x256 9 ミップマップ 42.8kb (43,832 バイト) 85.4kb (87,536 バイト)
512x512 10 ミップマップ 170kb (174,904 バイト) 341kb (349,680 バイト)
1024x1024 11 ミップマップ 682kb (699,192 バイト) 1.33MB (1,398,256 バイト)
2048x2048 12 ミップマップ 2.66MB (2,796,344 バイト) 5.33MB (5,592,560 バイト)
4096x4096 13 ミップマップ 10.6MB (11,184,952 バイト) 21.3MB (22,369,776 バイト)
8192x8192 14 ミップマップ 42.6MB (44,739,384 バイト) 85.3MB (89,478,640 バイト)

法線マップテクスチャフォーマット


Unreal Engine 3でサポートされている法線マップの詳細については、法線マップフォーマット? 項目を参照してください。

エンジンConfig TextureGroupプロパティ


特定のゲームTextureGroupsにサポートされている最小および最大LOD(ミップマップ)数は、エンジンコンフィギュレーションファイル数で定義されます。
コンフィギュレーション設定ファイルの一連のソースは、 [SystemSettings] セクションの「UnrealEngine3\Engine\Config\BaseEngine.ini」ファイルにあります。
ゲームの開発をするにあたり、「[My] Documents\My Games\[your_game]\Config\[your_game]Engine.ini」ファイルは、「Engine\Config\」 フォルダにある基本プロパティのミラーセットを格納し、大抵においてユーザー仕様の設定へと変更されたコピーです。

Unrealエディタとゲーム内に、TextureGroup項目の独自のセットがあることに留意ください。これらの2つのセットは、コンフィギュレーションファイルの [SystemSettingsEditor] と [SystemSettings] セクションにそれぞれ格納されています。

「BaseEngine.ini」ファイルにあるTextureGroup設定項目はこれに似ています。古いQAバージョンは、各設定にMinMagFilterおよびMipFilterプロパティを含んでいない恐れがありますのでご注意ください。

TEXTUREGROUP_World=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WorldNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WorldSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Character=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_CharacterNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_CharacterSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Weapon=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WeaponNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WeaponSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Vehicle=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_VehicleNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_VehicleSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Cinematic=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Effects=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=linear,MipFilter=point)
TEXTUREGROUP_EffectsNotFiltered=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Skybox=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_UI=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_LightAndShadowMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)

「<your_game>Engine.ini」にあるTextureGroup設定は通常これに似ています。LOD設定は、通常ゲームデザインおよび対象プラットフォームにより要求された範囲内で設定されますのでご注意ください。 

TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_WorldNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_WorldSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_Character=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_CharacterNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_CharacterSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_Weapon=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_WeaponNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_WeaponSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_Vehicle=(MinLODSize=512,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_VehicleNormalMap=(MinLODSize=512,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_VehicleSpecular=(MinLODSize=512,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_Cinematic=(MinLODSize=256,MaxLODSize=4096,LODBias=0)
TEXTUREGROUP_Effects=(MinLODSize=128,MaxLODSize=512,LODBias=1)
TEXTUREGROUP_Skybox=(MinLODSize=512,MaxLODSize=2048,LODBias=0)
TEXTUREGROUP_UI=(MinLODSize=512,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_LightAndShadowMap=(MinLODSize=512,MaxLODSize=4096,LODBias=0)
TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0)

PC AppCompat バケット


AppCompatは、起動時に収集される客観的で実証的証拠を基に、さまざまなSystemSettingsをオーバーライドする際に使用されます。アプリの互換性が有効(PCのみ)にされると、システムはマシンの許容量を計測し、5つのバケットの一つである既定値でEngine.ini値を上書きします。この使用例についてはUTGameのDefaultCompat.iniをご覧ください。

AppCompatはゲームが初めて実行(エディタではありません)された時に、「一度のみ」チェックされることになっています。マシンが以前演算したスコアを含む、[game]Engine.iniの [AppCompatJP] セクションの存在をチェックすることでこれを検出します。AppCompat がすでに一度適用されている場合は、その都度上書きする以外は、ユーザーによるカスタム変更は二度と出来ないようになっています。

AppCompatは特にエディタのために無効になっているため、開発時にさまざまなマシン上でアセットが表示されても、マシンスペックが影響を与えることはありません。そのため、SystemSettingsとSystemSettingsEditorが分けられているのです。

ゲーム(例はUTGameを参照)に空の「DefaultCompat.ini」を与えることで、AppCompat を効率よく無効にすることができますが、これは「Engine.ini」の[SystemSettings]からすべてのバケットを初期化する原因となります。この場合、システムはAppCompatが導入される前の動作とまったく同じに機能します。 

TEXTUREGROUPプロパティ


各TextureGroup項目は、ゲームレンダリングにおいて、特定のテクスチャセットのテクスチャプロパティを定義します。テクスチャを共通のセットにグループ化することは、さまざまなゲームテクスチャリソースで使用されているテクスチャメモリプールの制御をより良くします。

MinLODSize レンダリングされる最小のミップマップサイズ。ピクセルで指定されている。1から8192の範囲で2の累乗で表示。MaxLODSize以下でなければならない。
MaxLODSize レンダリングされる最大のミップマップサイズ。ピクセルで指定されている。1から8192の範囲で2の累乗で表示。MinLODSize以上でなければならない。
LODBias レンダリングにアップロードする前にオフセットして、ミップマップレベル数を決定する正または負の値。MinLODSizeおよびMaxLODSizeの範囲内で数値を制限。
MinMagFilter テクスチャがGPUによって縮小または拡大された時、テクスチャフィルタータイプを指定する。下記のチャートを参照。
MipFilter テクスチャを遠くから、またはグレージング角から眺めた際に、GPUが二つのミップマップをブレンドするべきか否か指定する。下記のチャートを参照。
NumStreamedMips ストリームインまたはアウトが許可されるミップマップの数。テクスチャが10のミップレベルを持ちNumStreamedMipsが 2 の場合、最上位の2つのミップレベルのみがストリームインまたはアウトが許可されます。これによって8~10のミップマップがいつでもメモリに常駐します。 NumStreamedMipsを 0に設定することは、ミップマップはストリーミングされず、このLODグループを使用しているテクスチャがいつも全て読み込まれることを意味します。NumStreamedMipsを -1 に設定することは、全てのミップレベルがストリーミングされることを許可します(引き続きその他の制限も適用されます)。NumStreamedMipsは、デフォルト値が -1 となる任意の設定です。

MinMagFilter MipFilter フィルタタイプ
point - Point
linear point Bilinear
linear - Trilinear
aniso point Anisotropic Point
aniso - Anisotropic Linear

TextureGroup、LODGroup、LODBias


「config ini」ファイルにて指定されたTextureGroupとLODBias、Texture プロパティで指定されたLODGroup とLODBias は、 各テクスチャに使用されるテクスチャミップマップの最終セットを決定します。

Engine.ini にあるTextureGroup エントリの例はこれに似たような感じです:

TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=1024,LODBias=0,MinMagFilter=aniso,MipFilter=point,NumStreamedMips=3)

TEXTUREGROUP_World LODGroup に割り当てられたテクスチャは、レンダリングに使用されるミップマップの範囲を決定するためこれらの設定を使用します。 Texture プロパティの追加のLODBias 設定は、config ini ファイルTextureGroupで指定されたLODBias に追加形式となっています。

LODBiasは、 レンダリング用にどのミップマップが選択されるかを バイアス またはオフセットします。LODBiasは、LODGroupが最小/最大範囲になる前に演算されます。TextureプロパティにあるLODBiasは、最終的に使用されたLODBias値を測定するため、TextureGroupのLODBiasに追加されます。
LODBiasが0の場合は、主要(ネイティブ)のテクスチャ解像度となります。LODBiasが1の場合は、テクスチャの最初のミップマップで、LODBiasが2の場合は、第二のミップマップです。例えば、LODBiasが1の場合の1024x1024テクスチャは、512x512のミップマップがレンダリング用に選択されます。

各テクスチャ用のTextureプロパティで指定されたLODBiasは、正にも負にもなるためTextureGroupのデフォルトLODBiasをより高い、またはより低いミップマップ値にオフセットしてしまうことがあります。
例えば、TextureGroup LODBiasが0の場合、またはTexture Properties LODBiasが0の場合、LODBias の最終値は0になります。
TextureGroup LODBiasが0でTexture Properties LODBiasが1の場合、LODBiasの最終値は1になります。
TextureGroup LODBiasが1でTexture Properties LODBiasが1の場合、LODBiasの最終値は2になります。
TextureGroup LODBiasが1でTexture Properties LODBiasが-1の場合、LODBiasの最終値は0になります。

最終のLODBiasが計算されると、TextureGroupの最小/最大LODSize範囲内に適合するかどうか、テクスチャミップマップをチェックします。そして必要があればそれを調整します。これは設定された最小/最大LOD 範囲内で、特定のTextureGroupを効率よくクランプする、簡単な「config ini」ファイル変更を可能にします。例えば、LODBiasの値が1である1024x1024テクスチャが512x512のミップマップを使用する場合、上記で示すようなTEXTUREGROUP_World LODGroup 内であれば、TextureGroupの最少/最大LODSize範囲内であるかどうかチェックされます。この場合、最小値が256で、最大値が1024になります。

各ゲームタイトルが独自のTextureGroup設定を持つため、アーティストおよびレベルデザイナーの方は各グループのMinLODSizeおよびMaxLODSizeに気をつけてください。
MaxLODSize が1024の値を持つTextureGroup に2048のテクスチャの値が割り当てられてゲームを出荷した場合、レンダリング品質に何も利益をもたらさないまま、配信出来るパッケージのサイズが増加します。

テクスチャインポートプロパティ


24ビットRGBテクスチャには、DXT1 テクスチャを生成するため、インポート時にCompressionNoAlpha を指定します。
32ビットARGBテクスチャには、DXT5 テクスチャを生成するため、CompressionNoAlpha のチェックをはずしたままにします。

スペキュラおよびオパシティ情報は、通常2つの24ビットDXT1 テクスチャを使用する代わりに、32ビットDXT5 テクスチャのアルファチャンネル内に設置されているのがベストです。2つのDXT1 テクスチャのファイルサイズが、1つのDXT5と同じサイズの時、エンジンでは、DXT1 が2つのTextureSamplerを使用するのに対して、DXT5はTextureSamplers 1つを使用します。ビデオアダプターには通常16のTextureSampler(SM3 およびSM4) があります。
DXT5 テクスチャのアルファチャンネルは、RGBプレーンとして同じ非可逆圧縮のスタイルを使わないため、グレイスケールデータを保持するのにより適しています。

テクスチャがある特定のTextureGroupの最大LOD 値より大きくなければいけない場合、テクスチャサイズをネイティブにサポートし、ミップマップ数を落とさないTextureGroup を必ず選択するようにしてください。

過多な2048や、より大きいテクスチャの使用には気をつけてください。コンソールのサポートを対象とする場合は、特に気をつける必要があります。 TextureGroupsのデフォルト使用をオーバーライドすることで、テクスチャメモリプールに影響を与える可能性があり、複数のシーンテクスチャが強制的にミップマップ数を落として、ぼやけた感じにしてしまうという、ビデオメモリが少ないシステム問題を引き起こす原因となります。

テクスチャのインポート時はTC_NormalMapのCompressionSettingsを選択するなど、適切な付加設定を選択するように気をつけてください。

UE3ImportTexture.gif

テクスチャビューアプロパティ


Texture プロパティはインポートされた各テクスチャに合わせて変更することができ、LODGroupやLODBiasなどへの設定変更を可能にします。
汎用ブラウザでテクスチャをダブルクリックするか、テクスチャ上で右クリックし、ポップアップメニューから[Texture Viewer](テクスチャビューア)を選択します。

UE3TextureProperties.gif