BaseMeshEffect
を利用して Shader側にパラメータを渡すために
下記コードのように uv1 を利用しようとしたがパラメータが渡されない
public override void ModifyMesh(VertexHelper vh) { var vertexList = new List<UIVertex>(); vh.GetUIVertexStream(vertexList); var rect = transform as RectTransform; for (int i = 0; i < vertexList.Count; i++) { var vertex = vertexList[i]; vertex.uv1 = new Vector2(0, 0); vertex.uv2 = new Vector2(rect.rect.width, rect.rect.height); vertexList[i] = vertex; } vh.Clear(); vh.AddUIVertexTriangleStream(vertexList); }
調べてみると Canvas は デフォルトでは color, position, uv0 のみ渡すようにしてあるらしい
そのため、必要なパラメータがあれば、 Additional Shader Channels をいじってやる必要がありました