implement texture and material