reworked glsl abstractions