🔥
【Unity】Graphics.Blit()にマテリアルを指定するとiOSで動作しない不具合対応
Unityで
・TextureをRenderTextureに変換したい
・シェーダーを適用させたい
場合、
Graphics.Blit(Texture source, RenderTexture dest, Material mat);
を利用することができます。
しかし、UnityEditor(Mac)では動作するものの、iOSでビルドした際にシェーダーが機能しませんでした。
そこで、RenderTexture(dest)深度を取り除き、0に設定しましょう。
// 略
// var dest = new RenderTexture(sw, sh, 24);
var dest = new RenderTexture(sw, sh, 0);
Graphics.Blit(source, dest, mat);
また、マテリアルのシェーダーにZWrite Off ZTest Always
を設定すると解決できるようです。
ZWrite Off
: デプステストを書き込まない (デフォルト)
ZTest Always
: 常に描画 ※ デフォルトはZTest LEqual
(すでに描画されているオブジェクトと距離が等しいかより近い場合に描画)
--
参考
Discussion