Now, if a struct member has an explicit 'uniform' or 'varying' qualifier, then that member has that variability, regardless of the variability of the struct's variability. Members without 'uniform' or 'varying' have unbound variability, and in turn inherit the variability of the struct. As a result of this, now structs can properly be 'varying' by default, just like all the other types, while still having sensible semantics.
9 lines
234 B
Plaintext
9 lines
234 B
Plaintext
// Gather operation is impossible due to the presence of struct member "x" with uniform type
|
|
|
|
struct Bar { uniform int x; };
|
|
struct Foo { varying Bar b; };
|
|
|
|
void a(uniform Foo * varying array, int index) {
|
|
Foo v = array[index];
|
|
}
|