export uniform int width() { return programCount; } struct Foo; void bing(Foo * uniform); struct Foo { int i; varying float f; Foo * uniform next; }; void bar(Foo * uniform f) { bing(f); } export void f_f(uniform float RET[], uniform float aFOO[]) { uniform Foo fa, fb; fa.next = &fb; fb.f = aFOO[programIndex]; fb.i = 100; bar(&fa); RET[programIndex] = fb.f; } void bing(Foo * uniform f) { f = f->next; f->f *= 2; } export void result(uniform float RET[]) { RET[programIndex] = 2 + 2*programIndex; }