Development notes: Possible Optimization: The shaded lights can be kept as an array instead of a linked list. Possible Optimization: Omit uniform variables from the shading language. Treat all variables as varyings.