Совсем не в тему

Я бы в двумерном хранил или написал бы обертку, чтобы не в массив лазить каждый раз, а вызывать функции.
Если кому то интересно, я написал свой первый шейдер

Переводит текстуру материала из цветной в черно-белую
Shader "Custom/Grayscale" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_MainTex;
};
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o) {
half3 c = tex2D (_MainTex, IN.uv_MainTex).rgb;
half grey = c.r * 0.3f + c.g * 0.59f + c.b * 0.11f;
o.Albedo = (grey, grey, grey);
}
ENDCG
}
FallBack "Diffuse"
}