Вот у Нэкса отличный код, у меня используется точь-в-точь такой же алгоритм (единственное - обрисовка всегда чёрная), плюс юзаю текстуру-сфермап с блендом 2. Скрин и сама сфермапа ниже.
Сфермапа:
Какая-то лажа с загрузкой файлов на булку, грит прошла неудачно...