I don't think you can use table notation for vector parameters in the struct package. i.e you should use
struct.set("Color", 255, 255, 0, 255)
struct.set("Center", 0.0, 0.0, 0.0, 0.0)
Without the "{" and "}". I am surprised there was no error message. Thx for pointing this out.
There are sometimes also alignment problems between the OpenCL structs and the ones created by the struct package. It would be best to use the "aligned" directive when defining OpenCL structs like so:
typedef struct __attribute__ ((aligned (16)))
{
float4 Center;
uchar4 Color;
float Radius;
} Sphere;
Right now the struct package implicity aligns to 16 bytes but in the future this parameter will be variable.
I hope that fixes the problem. Otherwise your code looks fine.