btw, with preprocessor, this struct can be reused in the shader itself.