| #version 400 | |
| layout(constant_id = 16) const int arraySize = 5; | |
| in vec4 ucol[arraySize]; | |
| layout(constant_id = 17) const bool spBool = true; | |
| layout(constant_id = 18) const float spFloat = 3.14; | |
| layout(constant_id = 19) const double spDouble = 3.1415926535897932384626433832795; | |
| layout(constant_id = 22) const uint scale = 2; | |
| layout(constant_id = 24) gl_MaxImageUnits; | |
| out vec4 color; | |
| out int size; | |
| // parameter should be considered same type as ucol | |
| void foo(vec4 p[arraySize]); | |
| void main() | |
| { | |
| color = ucol[2]; | |
| size = arraySize; | |
| if (spBool) | |
| color *= scale; | |
| color += float(spDouble / spFloat); | |
| foo(ucol); | |
| } | |
| layout(constant_id = 116) const int dupArraySize = 12; | |
| in vec4 dupUcol[dupArraySize]; | |
| layout(constant_id = 117) const bool spDupBool = true; | |
| layout(constant_id = 118) const float spDupFloat = 3.14; | |
| layout(constant_id = 119) const double spDupDouble = 3.1415926535897932384626433832795; | |
| layout(constant_id = 122) const uint dupScale = 2; | |
| void foo(vec4 p[arraySize]) | |
| { | |
| color += dupUcol[2]; | |
| size += dupArraySize; | |
| if (spDupBool) | |
| color *= dupScale; | |
| color += float(spDupDouble / spDupFloat); | |
| } | |
| int builtin_spec_constant() | |
| { | |
| int result = gl_MaxImageUnits; | |
| return result; | |
| } |