BLOGブログ

2017.01.18UE4UE/ Material

[UE4]共有テクスチャサンプラを利用してマテリアル内で使えるテクスチャの数を増やす

UE4のマテリアル内でテクスチャを利用する場合、”TextureSample”というノードにTextureをアサインして使用しますが、

2017-01-18_14h24_00

DX11の仕様で、単一のシェーダー内で使用できるユニークなTextureSamplerの数は最大16個と決まっているため、

17枚以上のテクスチャを使用するとエラーとなり、マテリアルが正しく表示されません。

■TextureSampleを16個使用(ギリギリセーフ)

2017-01-18_13h08_16

■TextureSampleを17個使用(アウト)

2017-01-18_13h09_40

キャラクターやランドスケープなど、複数の質感を単一のマテリアルで表現する必要がある場合、16枚という制限は中々煩わしいものです。

今回は、共有テクスチャサンプラー(Shared Texture Sampler)という機能を利用して、

17個以上のTextureSampleを使えるようにしてみたいと思います。

 

TextureSampleノードを選択し、”Sampler Source”を“Shared:Wrap”“Shared Clamp”に変更します。
(“Shared:Wrap”はタイリングしたときに繰り返し。”Shared:Clamp”はタイリングしたときに繰り返さない。)

2017-01-18_14h12_29

 

↓20個のTextureSampleすべてを”Shared:Wrap”設定にした結果がこちらです。

統計情報では、TextureSampler数は1/16となっており、もちろんエラーは出ていません。

2017-01-18_14h14_03

 

この方法であれば、DX11の単一シェーダー内のテクスチャ数の限界である最大128枚までいけるようですが、

処理速度を考慮するのであれば、TextureSampleの数は少なければ少ないに越した事はありませんので、ご利用は計画的に!