UE4のマテリアル内でテクスチャを利用する場合、”TextureSample”というノードにTextureをアサインして使用しますが、
![2017-01-18_14h24_00](https://historia.co.jp/wp/wp-content/uploads/2017/01/2017-01-18_14h24_00.png)
DX11の仕様で、単一のシェーダー内で使用できるユニークなTextureSamplerの数は最大16個と決まっているため、
17枚以上のテクスチャを使用するとエラーとなり、マテリアルが正しく表示されません。
■TextureSampleを16個使用(ギリギリセーフ)
![2017-01-18_13h08_16](https://historia.co.jp/wp/wp-content/uploads/2017/01/2017-01-18_13h08_16.png)
■TextureSampleを17個使用(アウト)
![2017-01-18_13h09_40](https://historia.co.jp/wp/wp-content/uploads/2017/01/2017-01-18_13h09_40.png)
キャラクターやランドスケープなど、複数の質感を単一のマテリアルで表現する必要がある場合、16枚という制限は中々煩わしいものです。
今回は、共有テクスチャサンプラー(Shared Texture Sampler)という機能を利用して、
17個以上のTextureSampleを使えるようにしてみたいと思います。
TextureSampleノードを選択し、”Sampler Source”を“Shared:Wrap”か“Shared Clamp”に変更します。
(“Shared:Wrap”はタイリングしたときに繰り返し。”Shared:Clamp”はタイリングしたときに繰り返さない。)
![2017-01-18_14h12_29](https://historia.co.jp/wp/wp-content/uploads/2017/01/2017-01-18_14h12_29-1-1024x711.png)
↓20個のTextureSampleすべてを”Shared:Wrap”設定にした結果がこちらです。
統計情報では、TextureSampler数は1/16となっており、もちろんエラーは出ていません。
![2017-01-18_14h14_03](https://historia.co.jp/wp/wp-content/uploads/2017/01/2017-01-18_14h14_03.png)
この方法であれば、DX11の単一シェーダー内のテクスチャ数の限界である最大128枚までいけるようですが、
処理速度を考慮するのであれば、TextureSampleの数は少なければ少ないに越した事はありませんので、ご利用は計画的に!