properly factored out shader construction. can loop.