shaders and custom lists

Although I can’t be sure because I’ve mainly dealt with OpenGL/GLSL shaders rather than Panda/Cg shaders, I don’t think arrays will work, especially if you mean variable length arrays.

There are a couple of alternatives though. You can simply pass a large number of normal variables to an array, plus a counter variable. If you need to pass more data than is possible with this method, you can try to pack data into a 1D (or 2D) texture and treat the texture data like an array of values, which requires fairly straightforward conversion of array indices into texture coords in your shader.