refactor shader setup and add water plane