diffuse and basic shaders implementation