1uniform half4 colorGreen, colorRed; 2 3struct InnerLUT { 4 float3 values; 5}; 6struct OuterLUT { 7 InnerLUT inner[3]; 8}; 9struct Root { 10 OuterLUT outer[3]; 11}; 12 13half4 main(float2 coords) { 14 Root data; 15 data.outer[0].inner[0].values = float3(1, 10, 100); 16 data.outer[0].inner[1].values = float3(2, 20, 200); 17 data.outer[0].inner[2].values = float3(3, 30, 300); 18 data.outer[1].inner[0].values = float3(4, 40, 400); 19 data.outer[1].inner[1].values = float3(5, 50, 500); 20 data.outer[1].inner[2].values = float3(6, 60, 600); 21 data.outer[2].inner[0].values = float3(7, 70, 700); 22 data.outer[2].inner[1].values = float3(8, 80, 800); 23 data.outer[2].inner[2].values = float3(9, 90, 900); 24 25 float3 expected = float3(0); 26 for (int i=0; i<3; ++i) { 27 for (int j=0; j<3; ++j) { 28 expected += float3(1, 10, 100); 29 30 // Compare the float3 as a group. 31 if (data.outer[i].inner[j].values != expected) { 32 return colorRed; 33 } 34 35 // Compare the float3 as individual units. 36 for (int k=0; k<3; ++k) { 37 if (data.outer[i].inner[j].values[k] != expected[k]) { 38 return colorRed; 39 } 40 } 41 } 42 } 43 44 return colorGreen; 45} 46