made shaders completely generic