以下のように RenderTexture を生成して、uGUI を映しているカメラに紐付けたところ
下図のように Mask が適応されていない
private void Init() { _renderTexture = new RenderTexture(200, 200, 0); ・・・ _camera = _instance.GetComponentInChildren<Camera>(); _camera.targetTexture = _renderTexture; _camera.Render(); }
原因
RenderTexture の Depth は 16 未満の場合は ステンシルバッファーを見ないため
ステンシルバッファーを使った Mask が適応されなかった模様
Unity - Scripting API: RenderTexture.depth
解決方法
Depth を 17以上 にしてやることで解決できた
※ 17以上 24 以下の場合は内部で 24 にしているのではないかと推測
_renderTexture = new RenderTexture(200, 200, 24);
すると Mask が適応された ものが RenderTexture に映った