1struct Vector { float x, y, z; }; 2 3struct Ray { Vector o; float t; Vector d; }; 4 5 6void init(uniform Ray rays[], uniform int count, float v) { 7 for (uniform int i = 0; i < count; ++i) { 8 rays[i].o.x = i; 9 rays[i].o.y = 2*i; 10 rays[i].o.z = 3*i; 11 rays[i].t = 4*i; 12 rays[i].d.x = 5*i; 13 rays[i].d.y = 6*i; 14 rays[i].d.z = 7*i; 15 } 16} 17 18void zero_dx(uniform Ray * r) { 19 #pragma ignore warning(perf) 20 r->d.x = 0; 21} 22 23export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) { 24 float v = aFOO[programIndex]; 25 uniform Ray rays[programCount+1]; 26 init(rays, programCount+1, v); 27 zero_dx(&rays[v]); 28 #pragma ignore warning(perf) 29 Ray rg = rays[v]; 30 RET[programIndex] = rg.o.z + rg.d.x; 31} 32 33export void result(uniform float RET[]) { 34 RET[programIndex] = 3 + 3*programIndex; 35} 36