Есть два способа сделать это.Сначала было бы создать цилиндр и пересечь его с поверхностью, получить отрезки пересечения и нарисовать их.Если у вас уже есть математическая библиотека, которую вы можете использовать, и если вам не нужно пересекать каждый кадр, это может быть хорошей идеей.Вы получите точно то, что вы хотите.
Другой вариант, как вы уже предложили, - использовать проекцию.Хотя я не уверен, что вы сможете ясно видеть тень круга на поверхности.Однако, если у вас есть параметрические координаты текстуры для вашей поверхности, вы можете создать текстуру с нанесенным на нее кругом и применить эту текстуру к поверхности.