shader api refactoryng