generate procedural material