Calculating normals on the GPU for procedural terrain