blob: 349b574ac77e66eabc25493461b06dcec983de08 [file] [log] [blame]
uniform half4 colorGreen, colorRed;
struct InnerLUT {
float3 values;
};
struct OuterLUT {
InnerLUT inner[3];
};
struct Root {
OuterLUT outer[3];
};
half4 main(float2 coords) {
Root data;
data.outer[0].inner[0].values = float3(1, 10, 100);
data.outer[0].inner[1].values = float3(2, 20, 200);
data.outer[0].inner[2].values = float3(3, 30, 300);
data.outer[1].inner[0].values = float3(4, 40, 400);
data.outer[1].inner[1].values = float3(5, 50, 500);
data.outer[1].inner[2].values = float3(6, 60, 600);
data.outer[2].inner[0].values = float3(7, 70, 700);
data.outer[2].inner[1].values = float3(8, 80, 800);
data.outer[2].inner[2].values = float3(9, 90, 900);
float3 expected = float3(0);
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
expected += float3(1, 10, 100);
// Compare the float3 as a group.
if (data.outer[i].inner[j].values != expected) {
return colorRed;
}
// Compare the float3 as individual units.
for (int k=0; k<3; ++k) {
if (data.outer[i].inner[j].values[k] != expected[k]) {
return colorRed;
}
}
}
}
return colorGreen;
}